Определите сканер (ы), подключенный к компьютеру? - PullRequest
1 голос
/ 10 февраля 2009

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

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 записей. Было бы здорово отфильтровать это до пары. :)
  • Есть ли способ определить, что устройство является сканером, для сценария, в котором я заранее не знаю о модели / типе сканера, который будет подключен?

1 Ответ

2 голосов
/ 10 февраля 2009

Вы можете попробовать библиотеку автоматизации сбора изображений Windows, как предложено в этой теме

...