如何检索监视器信息?

时间:2010-04-08 13:37:36

标签: .net c++ windows winapi monitors

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

我尝试过这些方法:
Win32: EnumDisplayMonitors,EnumDisplayDevices:这些返回监视器都不是活动的,也没有一个返回正确的ID。
WMI:“从Win32_DesktopMonitor中选择*”不会返回所有监视器,也没有ID。
注册表:我在不同地点找到了显示器,我找到的地方都没有我想要的信息。

非常感谢任何帮助。 :)

更新:这些是我要查找的显示器号码: alt text

3 个答案:

答案 0 :(得分:1)

根据目的,您可能希望查看基于驱动程序的解决方案。我知道nVidia有一些不错的库,可以让你访问控制面板上的大部分功能。

答案 1 :(得分:1)

你有两次调用EnumDisplayDevices吗?尝试类似:

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

答案 2 :(得分:0)

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