14

我正在尝试检索 Windows 显示属性(#1、2...等)中显示的监视器 ID,但我似乎找不到方法。我尝试过使用EnumDisplayMonitorsEnumDisplayDevices。他们都返回类似“\.\DISPLAY1”的东西。但是,此数字并不总是与 Windows 显示的数字相匹配,尤其是在使用 2 个视频卡驱动 3 个或更多显示器时。我是否缺少 API 调用来检索此信息,或者有没有办法从注册表或其他地方获取它?谢谢!

我已经尝试过这些方法:
Win32: EnumDisplayMonitors、EnumDisplayDevices:这些都不会返回不活动的监视器,也不会返回正确的 ID。
WMI: "select * from Win32_DesktopMonitor" 没有返回所有的显示器,也没有 ID。
注册表:我在不同位置找到了监视器,但我找到的所有地方都没有我要查找的信息。

任何帮助深表感谢。:)

更新:这些是我正在寻找的监视器号码: 替代文字

4

3 回答 3

2

根据目的,您可能希望寻找基于驱动程序的解决方案。我知道 nVidia 有一些不错的库,可以让您访问控制面板中的大多数功能。

于 2010-04-08T20:32:09.490 回答
1

您是否对 EnumDisplayDevices 进行了两次调用?尝试类似:

while (EnumDisplayDevices(0, dev, &dd, 0))
{
...
  while (EnumDisplayDevices(dd.DeviceName, devMon, &ddMon, 0))
  {
   ...
  }
}
于 2010-04-09T09:29:21.750 回答
0

只是一个猜测,但它看起来像 Windows 显示iDevNum+1在 Windows 显示属性中。

于 2010-04-08T15:37:44.460 回答