Показать сообщение отдельно
Старый 25.02.2009, 07:18   #9  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
Цитата:
Сообщение от ivas Посмотреть сообщение
погуглил... пишут что эт действительно порт, информация храниться гдето в реестре)
Похоже что информация о портах есть в этих ветках реестра:
Цитата:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices
Цитата:
Сообщение от KingPeas Посмотреть сообщение
Вот только чистые названия принтеров эксель не кушает, ему нужно свое с указанием всех (Ne01, (LPT1 и т.д.
А получить список принтеров можно и через PrintJobSettings;
Набросал небольшой job получения списка принтеров (и портов из реестра) :
X++:
static void jbPrinterListByPrintJobSettings(Args _args)
{

    PrintJobSettings    printJobSettings    ;
    Name                printerName ;

    Counter             printerNum  ;
    Counter             printerCount;

    TempStr getPrinterPort( Name _printerName )
    {
        int     regKeyHandle    ;
        TempStr printerPorts    ;

        #WinAPI
        // #define.RegistryKey( 'Software\\Microsoft\\Windows NT\\CurrentVersion\\Devices' )
        #define.RegistryKey( 'Software\\Microsoft\\Windows NT\\CurrentVersion\\PrinterPorts' )
        ;

        regKeyHandle = WinAPI::regOpenKey( #HKEY_CURRENT_USER, #RegistryKey, #KEY_READ ) ;
        [ printerPorts ] = WinAPI::regGetValue( regKeyHandle, _printerName ) ;
        WinAPI::regCloseKey( regKeyHandle );

        return strline( strreplace( printerPorts, ',', '\n' ), 1 ) ;
    }
    ;

    printJobSettings = new printJobSettings() ;
    printerCount = printJobSettings.getNumberOfPrinters() ;
    setPrefix( strfmt( "Number of printers: %1, default device: %2", printerCount, printJobSettings.deviceName() ) ) ;

    for( printerNum =1; printerNum <=printerCount; printerNum++ )
    {
        printerName = printJobSettings.getPrinter( printerNum ) ;
        info( strfmt( "%1 (%2)", printerName, getPrinterPort( printerName ) ) ) ;
    }
}
Получившийся результат:
Изображения
 
За это сообщение автора поблагодарили: aidsua (1), KingPeas (1).