Главная страница
    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.46 MB
Время: 0.17 c
2-1136622058
rruussllaann
2006-01-07 11:20
2006.01.22
регистрация своего типа файла


14-1135887655
Джо
2005-12-29 23:20
2006.01.22
Прокси-сервера


5-1121781895
Destroyer
2005-07-19 18:04
2006.01.22
Создание кнопки с вертикальным текстом


14-1135922363
КаПиБаРа
2005-12-30 08:59
2006.01.22
C наступающим Новым годом, Друзья!


9-1119771942
VolanD666
2005-06-26 11:45
2006.01.22
Анимация





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский