Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Вниз

Как узнать что в системе установлен хотя бы один принтер?   Найти похожие ветки 

 
Pavel__   (2005-12-16 22:42) [0]

Здравствуйте, собственно сабж. Printer.Printers.Count вряд ли поможет - список насколько я понял формируется при запуске приложения, а обновлять его каждый раз когда требуется слишком ресурсоемко. Спасибо.


 
kami ©   (2005-12-16 22:54) [1]

Pavel__   (16.12.05 22:42)
формируется при запуске

неправда ваша (с)
Он формируется при первом обращении к свойству Printers.
как получить список принтеров - можно посмотреть, как это делает функция GetPrinters класса Printer


 
Pavel__   (2005-12-16 23:02) [2]


> неправда ваша (с)


Я просто не стал углублятся в подробности, суть одна - список постоянен, принтеры уже могут быть удалены а список никуда не денется. А знать есть ли принтеры в системе нужно очень часто.


 
Pavel__   (2005-12-16 23:06) [3]

Все, извиняюсь :). Это все природная лень, покопал исходник, вижу как сделать, пишу функцию. Спасибо :)


 
Pavel__   (2005-12-16 23:08) [4]


function PrintersCount: Integer;
var
 LineCur, Port: PChar;
 Buffer, PrinterInfo: PChar;
 Flags, Count, NumInfo: DWORD;
 I: Integer;
 Level: Byte;
begin
 if Win32Platform = VER_PLATFORM_WIN32_NT then
 begin
   Flags := PRINTER_ENUM_CONNECTIONS or PRINTER_ENUM_LOCAL;
   Level := 4;
 end
 else
 begin
   Flags := PRINTER_ENUM_LOCAL;
   Level := 5;
 end;

 Count := 0;
 EnumPrinters(Flags, nil, Level, nil, 0, Count, NumInfo);

 Result := Count;
end;


 
Германн ©   (2005-12-17 01:23) [5]

Радикальный способ решения сабжа! Задействовать в программе QReport. На моей памяти он при старте программы всегда "громко кричал", если в системе  не был установлен ни один принтер. :-)


 
Pavel__   (2005-12-17 02:25) [6]


> Радикальный способ решения сабжа! Задействовать в программе
> QReport. На моей памяти он при старте программы всегда "громко
> кричал", если в системе  не был установлен ни один принтер.
>  :-)


Дык наоборот, надо чтоб не кричало об этом и не было обращений к несуществующему устройству :)


 
Германн ©   (2005-12-17 02:31) [7]


> Pavel__   (17.12.05 02:25) [6]
>
> Дык наоборот, надо чтоб не кричало об этом и не было обращений
> к несуществующему устройству :)

Ты же в сабже спросил, " Как узнать что в системе установлен хотя бы один принтер?" Ну я и ответил. Или мой юмор был не понят?


 
Pavel__   (2005-12-17 02:49) [8]


> Или мой юмор был не понят?


Был понят :) Действую от обратного - узнаю есть ли принтер и с ним работаю, в противном случае - не даю работать пользователю и не показываю всяких глупых сообщений об ошибках. Вот :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.053 c
5-1122625321
Juice
2005-07-29 12:22
2006.01.22
Как отлаживать свои компоненты?


1-1134651350
Sergey Ivanov
2005-12-15 15:55
2006.01.22
TImageList и MainMenu


2-1136153627
mr.Evil
2006-01-02 01:13
2006.01.22
Как удалить запись из потомка TFileStream


9-1122718523
Зм1й
2005-07-30 14:15
2006.01.22
Как повернуть точку на 90 градусов вокруг оси X?


5-1123149054
Juice
2005-08-04 13:50
2006.01.22
Как правильно вызвать RegisterPropertyEditor ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский