Где я могу найти имя, отображаемое в разделе «Устройства и принтеры»

1

У меня есть последовательное устройство, подключенное через Bluetooth. Он хорошо отображается на COM4. Я могу общаться с ним без проблем.

Я хочу упростить поиск пользователя (в идеале, я автоматически его обнаружу), поэтому я хочу найти его по имени. В списке "Устройства и принтеры" я получаю действительное имя, которое идеально. Однако я не могу найти эту ценность программно. Я пробовал массу вещей, используя класс "ManagementObjectSearcher", включая перечисление всех свойств и системных свойств, но никакие значения не соответствуют имени, отображаемому в "Устройствах и принтерах".

Если я смотрю в списке "Диспетчер устройств", он просто показывает "Стандартная последовательная связь по каналу Bluetooth (COM4)", что явно не полезно для ее идентификации.

Итак, как я могу получить отображаемое имя в списке "Устройства и принтеры"?

Теги:
bluetooth
winforms
windows-7
device

2 ответа

0

Итак, я нашел решение. Я схватил библиотеку от этих ребят:

http://32feet.codeplex.com/

Используя эту библиотеку, добавили эти две строки:

BluetoothClient client = new BluetoothClient();
BluetoothDeviceInfo[] devices = client.DiscoverDevices();

Это дало мне устройство "DeviceName" (имя, которое я получил после) и "DeviceAddress" (кусок идентификатора устройства, в основном).

Затем я запросил систему с помощью "ManagementObjectSearcher", которая предоставила мне список COM-портов и идентификаторов устройств (пространство имен System.Management).

ConnectionOptions options = ProcessConnection.ProcessConnectionOptions();
ManagementScope connectionScope = ProcessConnection.ConnectionScope(Environment.MachineName, options, @"\root\CIMV2");

ObjectQuery objectQuery = new ObjectQuery("SELECT * FROM Win32_PnPEntity");
ManagementObjectSearcher comPortSearcher = new ManagementObjectSearcher(connectionScope, objectQuery);

...etc as I looped over the results, pulled out the COM ports, and so on

Я сопоставил идентификаторы устройств из значений "ManagementObject" обратно в список "устройства", объединил результаты и получил то, что имело имя, идентификатор устройства, флаг, указывающий, является ли это устройством Bluetooth, и "человеком" читаемое "имя от устройства Bluetooth, если оно существует.

Болезненный, но он работает достаточно хорошо. Он медленный (client.DiscoverDevices() занимает некоторое время), но это выживаемо в моем случае.

0
  • 0
    Это идеально подходит для принтеров, но не включает никаких устройств, не относящихся к принтерам; какой мой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню