Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
14-1135694392
Digitman
2005-12-27 17:39
2006.01.22
Rayzoon Jamstix VSTi v1.01c


4-1131921055
zaslavskiy
2005-11-14 01:30
2006.01.22
число записей процеса


9-1123438144
SergProger
2005-08-07 22:09
2006.01.22
FullSceen


2-1135836643
ezorcist
2005-12-29 09:10
2006.01.22
ListBox с картинками


14-1135508385
Kerk
2005-12-25 13:59
2006.01.22
RegExp выделение ссылок