2015-02-08 2 views
0

У меня есть приложение должно напечатать на 3 принтерах
я сохранить имена принтеров в текстовом файле проблемы, когда отключение пользователя и повторное подключение принтера (USB принтера) он принимает заново имя или пыльник имя и печать перепутаны.Delphi с несколько принтером

Как выбрать принтер, если имя изменилось?

+0

Не можете ли вы сообщить пользователю, какой принтер использовать –

+0

, даже если пользователь не знает названия принтера –

+0

ПРИНТЕР не должен получать новое имя. Порт USB может быть перенаправлен на новый порт, но если вы печатаете с использованием NAME принтера, это не должно вас беспокоить. Как ваш фактический код ищет выбор принтера для печати и фактическую печать? – HeartWare

ответ

1

У меня была такая же проблема с USB-камерами. Они также имеют тенденцию просто создавать другой экземпляр/запись для устройства под окнами с добавленным номером (пример: Epson Blah Blah # 1), как только устройство перемещается на другой порт USB.

Ответ, скорее всего, лежит в дескрипторах устройств. Более конкретно, HardwareID устройства.

Для быстрого доступа к аппаратным средствам устройства войдите в Панель управления> Диспетчер устройств (если используется Win7 или выше), щелкните правой кнопкой мыши на устройстве, будь то USB-флэш-накопитель или USB-камера. Нажмите на свойства и перейдите на вкладку «Подробности». Измените значение «Свойство» на «Идентификаторы оборудования». Вы увидите HardwareIDs

Вы можете найти более подробную информацию о том, что здесь: https://msdn.microsoft.com/en-us/library/windows/hardware/ff539283%28v=vs.85%29.aspx

и:

https://msdn.microsoft.com/en-us/library/windows/hardware/jj649944%28v=vs.85%29.aspx

Последнее говорит о ключах реестра, где вы также можете найти информацию о Устройство. Ключ будет:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ DeviceClasses \ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ USB \\\ Параметры устройства HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ USB

Итак, если вы можете связать HardwareIDs с принтером, тогда вы сможете перечислить установленные принтеры для сравнения, а затем выбрать тот, который вы хотите. Поэтому вы сначала установите принтер и позволяете своему приложению выбирать этот принтер и сохранять его HardwareID. Затем каждый раз, когда устройства меняются на ПК, вы можете просто получить тот, который коррелирует с первоначально установленным принтером.

Я не тестировал это, так как в настоящее время у меня нет двух одинаковых устройств, чтобы убедиться, что оба они не имеют одинаковых идентификаторов оборудования.

Смежные вопросы