EnumDisplayDevices против WMI Win32_DesktopMonitor, как обнаружить активные мониторы?

Для моего текущего проекта C ++ мне нужно определить уникальную строку для каждого монитора, который подключен и активен на большом количестве компьютеров.

Исследование указало на 2 варианта

Используйте WMI и запросите Win32_DesktopMonitor для всех активных мониторов. Используйте PNPDeviceID для уникальной идентификации мониторов.

Используйте API-интерфейс EnumDisplayDevices и найдите код устройства.

Я заинтересован в использовании идентификатора устройства для уникальной идентификации модели, потому что мониторы, использующие драйвер Plug and Play по умолчанию, сообщат общую строку в качестве имени мониторамонитор "подключи и работай по умолчанию"

У меня возникли проблемы с методом WMI, кажется, он возвращает только 1 монитор на моей машине с Vista, глядя на документ, который, как оказалось, не работает должным образом на устройствах без WDDM.

EnumDisplayDevices кажется немного проблематичным, когда он запускается из фоновой службы (особенно в Vista), еслиs в сеансе 0 не вернет никакой информации.

Кто-нибудь еще должен был сделать нечто подобное (найти уникальную строку модели для всех подключенных активных мониторов?)

Какой подход работал лучше всего?

Ответы на вопрос(5)

Ваш ответ на вопрос