我使用WMI Win32_MonitorDesktop
获取系统上的所有监控信息。
然而它只返回一个。 我已经尝试过在几台计算机,而且他们肯定对他们的多个显示器,连接和工作。
ManagementObjectSearcher monitorObjectSearch = new ManagementObjectSearcher("SELECT * FROM Win32_DesktopMonitor");
foreach (ManagementObject monitor in monitorObjectSearch.Get())
{
Debug.WriteLine(monitor["Description"]);
}
有谁知道为什么我只得到1个显示器回来了?
另外,如果我给你monitorObjectSearch.Get()给一个变量的返回值,我无法在即时窗口的功能总是超时评估Count属性。
这可能是因为监视器都设置在一个横向跨度模式(NV和ATI显卡)有效地进行多显示器设置成一个大的显示器? 否则,我会继续有一个思考..
另外, MSDN相当特别指出 ,如果这个WMI调用与任何预Vista的使用会产生不准确的结果!?
我试图解决在许多系统上使用WMI这个问题(从WinXP的-SP3高达Win10),和我在不同的机器不同的结果。 有两个表,其中可以储存电流监控器设置。 首先是Win32_DesktopMonitor在cimv2命名空间,二是WMIMonitorID在WMI命名空间。 如果其中一人只有一个记录(在多显示器设置),然后第二次将所有条目。
然后让显示器的驱动程序名称,应该找到PnPDeviceID设备从Win32_PnPEntity表这些表中的记录发现,在cimv2命名空间。 您可以检查样品溶液在这里 。
我使用WMI(win32_Desktopmonitor)相同的码的窗口7的机器上。 它doen't工作有作为,在这个意义上,只有1个监视器返回,那里实际上有两个。
此外Screen.Allscreens.Length,只返回1个显示器。 让系统返回2台显示器的唯一方法,就是将桌面扩展到两个显示器,但是这不是大多数人做的。
这当然不回答您的实际问题,但搞清楚监控信息被阅读下面的注册表中最可靠的方法:
"SYSTEM\CurrentControlSet\Enum\DISPLAY\"
在HKEY_LOCAL_MACHINE