У меня была такая же проблема с 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. Затем каждый раз, когда устройства меняются на ПК, вы можете просто получить тот, который коррелирует с первоначально установленным принтером.
Я не тестировал это, так как в настоящее время у меня нет двух одинаковых устройств, чтобы убедиться, что оба они не имеют одинаковых идентификаторов оборудования.
Не можете ли вы сообщить пользователю, какой принтер использовать –
, даже если пользователь не знает названия принтера –
ПРИНТЕР не должен получать новое имя. Порт USB может быть перенаправлен на новый порт, но если вы печатаете с использованием NAME принтера, это не должно вас беспокоить. Как ваш фактический код ищет выбор принтера для печати и фактическую печать? – HeartWare