我如何检索显示器信息?

我试图检索显示器ID的显示在Windows显示属性(#1,2 …等),但我似乎无法find一种方法。 我已经尝试使用EnumDisplayMonitors以及EnumDisplayDevices 。 他们都返回类似“\。\ DISPLAY1”。 但是,这个数字并不总是与Windows所显示的数字相匹配,尤其是当使用2个显卡驱动3个或更多显示器时。 有没有一个API调用我缺less检索这些信息,或者有办法从registry或其他地方得到它? 谢谢!

我已经尝试了这些方法:
Win32: EnumDisplayMonitors,EnumDisplayDevices:这些返回监视器都不是活动的,都没有返回正确的ID。
WMI: “从Win32_DesktopMonitor中select*”不返回所有监视器,并且没有ID。
registry:我在各个地方find了显示器,没有find我要找的信息。

任何帮助深表感谢。 🙂

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

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

你有两个电话给EnumDisplayDevices吗? 尝试像这样:

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

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