我正在尝试检索监视器ID,如Windows显示属性(#1,2等等)中所示,但我似乎无法找到方法。我尝试过使用 EnumDisplayMonitors 以及 EnumDisplayDevices 。它们都返回类似“\。\ DISPLAY1”的内容。但是,此数字并不总是与Windows显示的数字相匹配,尤其是当使用2个视频卡驱动3个或更多显示器时。我是否缺少API调用来检索此信息,或者有没有办法从注册表或其他地方获取它?谢谢!
我尝试过这些方法:
Win32: EnumDisplayMonitors,EnumDisplayDevices:这些返回监视器都不是活动的,也没有一个返回正确的ID。
WMI:“从Win32_DesktopMonitor中选择*”不会返回所有监视器,也没有ID。
注册表:我在不同地点找到了显示器,我找到的地方都没有我想要的信息。
非常感谢任何帮助。 :)
更新:这些是我要查找的显示器号码:
答案 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
。