2009-02-10 4 views
1

Приложение, в котором я работаю, использует сканер, который может принадлежать одному из нескольких типов. Мне нужно определить прилагаемый сканер (ы), дать возможность выбрать сканер по умолчанию из прикрепленных, а также изменить этот выбор, когда это необходимо. До сих пор я пришел с этим решением:Укажите сканер (а), подключенный к компьютеру?

ManagementObjectSearcher search = new System.Management.ManagementObjectSearcher("SELECT * From Win32_PnPEntity"); 

ManagementObjectCollection deviceCollection = search.Get(); 

foreach (ManagementObject info in deviceCollection) 
{ 
    string deviceName = Convert.ToString(info["Caption"]); 

    if(/* check something about deviceName */) 
    { 
     // add a scanner to the list 
    } 
} 

Это работает для меня, потому что я знаю, чего ожидать в информации [ «Заголовок»]. Тем не менее, есть пара вопросов:

  • Я знаю, что мои устройства будут находиться под «Устройствами изображения». Есть ли способ идентифицировать только членов ветки «Образцы изображений», не зацикливаясь на каждом устройстве PnP? Просто выяснилось, что на моем компьютере deviceCollection имеет 190 записей. Было бы неплохо отфильтровать его до пары. :)
  • Есть ли способ определить, что устройство является сканером, для сценария, в котором я не знаю заранее о модели/типе сканера, который будет прикреплен?

ответ

2

Вы можете попробовать образа Windows Acquisition Automation Library, как предложено в this thread

+0

Этот подход «работает» в терминах компилируется и работает, но manager.DeviceInfos.Count 0. Я буду искать для причина, почему это происходит. – Evgeny

+0

Я думаю, я должен принять ответ, потому что он ДОЛЖЕН работать ... Я понятия не имею, почему это не так - возможно, драйверы устройств не поддерживают WIA (???) – Evgeny