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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.02.2009, 15:32   #1  
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).
Старый 25.02.2009, 05:55   #2  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
winapi вариант. Возвращает контейнер с адресами принтеров:
Вот только чистые названия принтеров эксель не кушает, ему нужно свое с указанием всех (Ne01, (LPT1 и т.д.
А получить список принтеров можно и через PrintJobSettings; Видел пост на форуме, правда где не помню, но через поиск легко найдете. Да и через SysFormPrint я уже диалог сделал для извлечения нужного имени. Проблема не в этом, а как скормить сие экселю
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ.
Старый 25.02.2009, 08:10   #3  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
Цитата:
Сообщение от petergunn Посмотреть сообщение
Похоже что информация о портах есть в этих ветках реестра:
Я с реестром мало работал. Эти ветки неизменны будут для разных операционных? Получается если я поставлю на сервер то как это будет отрабатывать на клиентах?

Цитата:
Сообщение от Eldar9x Посмотреть сообщение
дык, так и скормить:
X++:
COM doc, app;
;  
doc = excel.getComDocument();
app = doc.Application();
app.ActivePrinter("\\\\ipp://192.168.20.1\\Printers_VO (Ne01:)");
зы: причем надо полное указывать. Такое вот, например:
X++:
app.ActivePrinter("Printers_VO (Ne01:)");
не пройдет.
Получить имя принтера не проблема) И установить в экселе легко, вопрос как получить (Ne01 по имени принтера безболезненно и стабильно для любой системы
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ.
Теги
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, время: 00:17.