WMI获取所有的显示器不返回所有显示器(WMI Get All Monitors Not Retur

2019-07-18 00:24发布

我使用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属性。

Answer 1:

这可能是因为监视器都设置在一个横向跨度模式(NV和ATI显卡)有效地进行多显示器设置成一个大的显示器? 否则,我会继续有一个思考..

另外, MSDN相当特别指出 ,如果这个WMI调用与任何预Vista的使用会产生不准确的结果!?



Answer 2:

我试图解决在许多系统上使用WMI这个问题(从WinXP的-SP3高达Win10),和我在不同的机器不同的结果。 有两个表,其中可以储存电流监控器设置。 首先是Win32_DesktopMonitorcimv2命名空间,二是WMIMonitorIDWMI命名空间。 如果其中一人只有一个记录(在多显示器设置),然后第二次将所有条目。

然后让显示器的驱动程序名称,应该找到PnPDeviceID设备从Win32_PnPEntity表这些表中的记录发现,在cimv2命名空间。 您可以检查样品溶液在这里 。



Answer 3:

我使用WMI(win32_Desktopmonitor)相同的码的窗口7的机器上。 它doen't工作有作为,在这个意义上,只有1个监视器返回,那里实际上有两个。

此外Screen.Allscreens.Length,只返回1个显示器。 让系统返回2台显示器的唯一方法,就是将桌面扩展到两个显示器,但是这不是大多数人做的。



Answer 4:

这当然不回答您的实际问题,但搞清楚监控信息被阅读下面的注册表中最可靠的方法:

"SYSTEM\CurrentControlSet\Enum\DISPLAY\"

HKEY_LOCAL_MACHINE



文章来源: WMI Get All Monitors Not Returning All Monitors
标签: c# wmi monitor