Я пытаюсь перечислить модели принтеров для данного производителя. Windows «Добавить принтер» каким-то образом может это сделать — то есть, когда в левом списке выбран производитель, список моделей принтеров отображается справа.
Я знаком с EnumPrinters и EnumPrinterDrivers API, но ни одна из связанных структур (PRINTER_INFO * и DRIVER_INFO *) не содержит моделей принтеров.
DRIVER_INFO * содержит название производителя, но я не уверен, где найти модели принтеров, которые поддерживает соответствующий драйвер.
Будем благодарны за любые предложения и ссылки на онлайн-документы.
Благодарю.
EnumPrinterDrivers только перечисляет установлены драйверы принтера. В диалоговом окне «Добавить принтер» отображаются доступные драйверы, включая встроенные драйверы, которые еще не установлены.
Файлы встроенного драйвера находятся в Магазин драйверов. Например, если вы нажмете на HP на левой панели, драйверы для HP 910 и 915 находятся в этой INF:
C:\Windows\System32\DriverStore\FileRepository\prnhp003.inf_amd64_4480210763997eb4\prnhp003.inf
Чтобы установить эти, вы можете попробовать старый API настройки или новый API установщика Windows.
Кажется, не существует общедоступного API для перечисления содержимого хранилища драйверов, но Инструмент командной строки DISM может. Он проанализирует все нужные папки и файлы INF (для драйверов входящих сообщений если вы поставите переключатель / all в / get-drivers) и тогда вам просто нужно разобрать вывод. Например.
Dism /online /get-drivers /all /format:list >drivers.txt
(Я предложил DriverStore Explorer но оказывается, что это просто оболочка для Windows pnputil.exe инструмент, который не может перечислить драйверы входящих сообщений.)
Других решений пока нет …