Я пытаюсь получить идентификатор монитора как показано в свойствах дисплея Windows (#1, 2... и т.д.), но я, может казаться, не нахожу путь. Я попытался использовать EnumDisplayMonitors, а также EnumDisplayDevices. Они оба возврат что-то как "\.\DISPLAY1". Однако это число не всегда соответствует числу, показанному Windows, особенно когда 2 видеокарты используются для управления 3 или больше мониторами. Существует ли вызов API, который я пропускаю для получения этой информации или являюсь там способом получить ее из реестра или где-то в другом месте?Спасибо!
Я попробовал эти методы:
Win32: EnumDisplayMonitors, EnumDisplayDevices: Ни один из этих мониторов возврата, которые не активны, и никакой, не возвращает корректные идентификаторы.
WMI: "выберите * из Win32_DesktopMonitor", не возвращает все мониторы, и нет никакого идентификатора.
Реестр: Я нашел мониторы в различных местоположениях, ни одном из мест, которые я нашел, имеют информацию, которую я ищу.
Любая справка очень ценится.:)
Обновление: Это числа монитора, которые я ищу:
В зависимости от цели вам может потребоваться решение на основе драйверов. Я знаю, что у nVidia есть несколько приличных библиотек, которые дают вам доступ к большинству функций панели управления.
Просто предположение, но похоже, что Windows показывает iDevNum + 1
в свойствах экрана Windows.
Вы сделали два вызова EnumDisplayDevices? Попробуйте что-нибудь вроде:
while (EnumDisplayDevices(0, dev, &dd, 0))
{
...
while (EnumDisplayDevices(dd.DeviceName, devMon, &ddMon, 0))
{
...
}
}