Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Handle на все принтеры установленные в системе [D7, WinXP]


snoopy ©   (2007-10-14 02:03:00) 

Доброго времени суток!
Очень интересует, каким образом можно получить указатели (THandle) на все принтеры установленные в системе?

Для принтера, выбранного по умолчанию получаю так:

Printer.GetPrinter(Device, Driver, Port, hDeviceMode);

А как взять для остальных не доходит =\


Сергей М.   (2007-10-15 11:53:00) [1]


> хэндл на него должен быть?


Должен, если ты запросишь его у системы.

см. OpenPrinter


snoopy   (2007-10-14 12:56:00) [2]

Для того, чтобы пройтись по всем принтерам и для каждого узнать список заданий через EnumJobs();
Ведь принтер может иметь задание, даже если он не выбран по умолчанию..значит и хэндл на него должен быть? Я не прав?

Кстати, опытным путем проверено, что если хотя бы один принтер установлен, хэндл на него ловится)

В принципе можно и без хэндлов, вот так:

for print_num := 0 to Printer.Printers.Count-1 do
Jobs := GetSpoolerJobs(Printer.Printers.Strings[print_cnt]);

но хочется через EnumJobs


Германн   (2007-10-14 02:12:00) [3]


> Очень интересует, каким образом можно получить указатели
> (THandle) на все принтеры установленные в системе?

А ты уверен что "рукоятки" есть всегдадля всех установленных принтеров?
Зачем тебе хэндлы для "всех"? Их ведь может и "не быть реально". Даже ни одного!


Наверх

Титульная страница Поиск, карта сайта Написать письмо