Как я могу получить информацию о мониторе?

Я пытаюсь получить идентификаторы монитора, как показано в свойствах экрана Windows (#1, 2... и т. Д.), Но не могу найти способ. Я пытался использовать EnumDisplayMonitors, а также EnumDisplayDevices. Они оба возвращают что-то вроде "\.\DISPLAY1". Однако это число не всегда совпадает с числом, показанным Windows, особенно, когда две видеокарты используются для управления тремя или более мониторами. Есть ли вызов API, который мне не хватает для получения этой информации, или есть способ получить ее из реестра или где-то еще? Спасибо!

Я попробовал эти методы:
Win32: EnumDisplayMonitors, EnumDisplayDevices: Ни один из этих мониторов возврата не активен, и ни один из них не возвращает правильные идентификаторы.
WMI: "select * from Win32_DesktopMonitor" не возвращает все мониторы, и нет идентификатора.
Реестр: Я нашел мониторы в разных местах, ни в одном из найденных мест нет нужной мне информации.

Буду признателен за любую оказанную помощь.:)

Обновление: это номера мониторов, которые я ищу:альтернативный текст

3 ответа

В зависимости от цели вы можете обратиться к решению на основе драйверов. Я знаю, что у nVidia есть несколько приличных библиотек, которые дают вам доступ к большинству функций и панели управления.

Вы делали два звонка в EnumDisplayDevices? Попробуйте что-то вроде:

while (EnumDisplayDevices(0, dev, &dd, 0))
{
...
  while (EnumDisplayDevices(dd.DeviceName, devMon, &ddMon, 0))
  {
   ...
  }
}

Просто предположение, но похоже, что Windows показывает iDevNum+1 в свойствах отображения Windows.

Другие вопросы по тегам