Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Точная идентификация принтеров


Автор: Empire 31.1.2011, 08:28
Добрый день. Прошу Вашей помощи, т.к. сам ещё новичок в Delphi.

Цель: создать систему регистрации разрешённых принтеров для печати.
Идеальные условия: поиск принтеров в сети (даже если они не установлены на клиенте), их идентификация (с учётом того, что администраторы могут изменить имя принтера, или изменить DNS имя компьютера), а так же идентификация локальных принтеров.
При этом нужно учитывать, что принтеров одной модели может быть несколько.

Я порыскал на форуме и научился некоторую информация о принтере вытаскивать из локальной системы. Но, ни какого способа уникально идентифицировать принтер не нашёл. А про сетевой поиск принтеров мне ни чего не попалось.

P.S. Помогите, пожалуйста smile , сам не справляюсь smile

Автор: Empire 4.2.2011, 21:22
Да.... видно этим геморроем ни кто не занимался. К сожалению это не моя прихоть, поэтому буду придумывать дальше...

Автор: casinosoftguru 7.2.2011, 16:05
Насчет тех что установлены, описано тут http://forum.ixbt.com/topic.cgi?id=40:657
Насчет тех что не установлены. Можно придумать некий диалог где пользователь укажет где искать принтеры - например если дело происходит в офисе, и в офисе есть домен то соответственно надо искать в этом домене (поиск по Active Directory), например как вот на скриншоте диалог поиска винды (как его юзать из делфи можно легко найти в гугле).

user posted image

Можно предложить пользователю составить список возможных имен, и искать еще по ним также через функции поиска принтеров.
Можно посоветоваться с админом вашей сети\сетей, или с заказчиком\шефом на предмет составления списка возможных имен серверов с принтерами.
Включи мозг, проведи исследование сети, составь список возможных имен принтеров.
Также тебе придется обработать ситуацию с установкой драйверов принтера, и соответственно их поиском - я бы кинул это тоже на пользователя, вызвав стандартный диалог винды, пусть она ищет дрова автоматически или пользователь сам выбирает.
Лучше чем у винды алгоритм поиска драйверов ты вряд ли напишешь, если только составишь собственную базу принтеров и драйверов, купишь например пару дисков типа "драйвера для принтеров 2010" ))) Правда по моему это идиотизм но все же )))



Автор: Empire 8.2.2011, 03:09
Большое спасибо за подсказку smile . Буду копать smile 
Жалко, что у принтеров нет уникального серийного номера (что-то типа USBSTOR у USB устройств), который можно было бы получить из устройства.

Автор: CodeMonkey 8.2.2011, 10:41
Ну может и есть. Через какой-нибудь SetupAPI можно попробовать глянуть.

Только вот есть мнение, что даже если это есть, то применимо только локально, но никак не по сети. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)