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

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

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

Любая справка очень ценится.:)

Обновление: Это числа монитора, которые я ищу: alt text

13
задан Community 8 February 2017 в 14:23
поделиться

3 ответа

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

1
ответ дан 2 December 2019 в 02:23
поделиться

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

0
ответ дан 2 December 2019 в 02:23
поделиться

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

while (EnumDisplayDevices(0, dev, &dd, 0))
{
...
  while (EnumDisplayDevices(dd.DeviceName, devMon, &ddMon, 0))
  {
   ...
  }
}
1
ответ дан 2 December 2019 в 02:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: