AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.02.2009, 15:32   #8  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
winapi вариант. Возвращает контейнер с адресами принтеров:
X++:
static client server container EnumPrinters()
{
    container   con;

    #define.PRINTER_ENUM_LOCAL(0x00000002)
    #define.PRINTER_ENUM_FAVORITE(0x00000004)

    DLL         _winApiDLL = new DLL("winspool.drv");
    DLLFunction _enumPrinters = new DLLFunction(_winApiDLL, 'EnumPrintersA');


    Binary      bytes_needed    = new Binary(4);
    Binary      returned        = new Binary(4);
    Binary      printers;
    Binary      bStr            = new Binary(255);
    Binary      bByte           = new Binary(1);

    Binary      PRINTER_INFO_4;


    int ret, i, offs;
    ;

    _enumPrinters.returns(ExtTypes::DWord);

    _enumPrinters.arg(  ExtTypes::DWord,
                        ExtTypes::Pointer,
                        ExtTypes::DWord,
                        ExtTypes::Pointer,
                        ExtTypes::DWord,
                        ExtTypes::Pointer,
                        ExtTypes::Pointer
                        );

    bStr.string(0, "");
    bByte.byte(0, 0);

    ret = _enumPrinters.call( #PRINTER_ENUM_LOCAL | #PRINTER_ENUM_FAVORITE,
                        bStr,
                        4,
                        bByte,
                        0,
                        bytes_needed,
                        returned );


    printers = new Binary(bytes_needed.dWord(0));


    ret = _enumPrinters.call(  #PRINTER_ENUM_LOCAL | #PRINTER_ENUM_FAVORITE,
                        bStr,
                        4,
                        printers,
                        bytes_needed.dWord(0),
                        bytes_needed,
                        returned );

    for (i = 0; i < returned.dWord(0); i++)
    {
        bStr.attach(printers.dWord(offs), 255);

        con += bStr.string(0);

        offs += 12;
    }

    return con;
}

Последний раз редактировалось Eldar9x; 24.02.2009 в 15:35.
За это сообщение автора поблагодарили: aidsua (1).
Теги
excel, принтер

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
gl00mie: Read Excel table via ADO Blog bot DAX Blogs 2 09.04.2010 08:32
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Вызов Item() для коллекций Excel Владимир Максимов DAX: Программирование 15 17.08.2006 19:47
Аксапта и Excel Swetik DAX: Программирование 3 01.03.2004 10:12
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:45.