【发布时间】:2009-09-14 14:52:23
【问题描述】:
我正在使用 WMI Win32_MonitorDesktop 来获取系统上的所有监视器信息。
但是它只返回一个。我在几台电脑上试过了,他们肯定有多个显示器,连接和工作。
ManagementObjectSearcher monitorObjectSearch = new ManagementObjectSearcher("SELECT * FROM Win32_DesktopMonitor");
foreach (ManagementObject monitor in monitorObjectSearch.Get())
{
Debug.WriteLine(monitor["Description"]);
}
有人知道为什么我只退回了一台显示器吗?
此外,如果我将 monitorObjectSearch.Get() 的返回值分配给一个变量,我将无法在即时窗口中评估 Count 属性,因为该函数总是超时。
【问题讨论】:
-
从 Windows Vista 开始,与 Windows 显示驱动程序模型 (WDDM) 不兼容的硬件会为此类实例返回不准确的属性值。 (来自msdn.microsoft.com/en-us/library/aa394122(VS.85).aspx)
-
这表示它将返回不准确的属性值,我为单个监视器获得的值是正确的。我只有一台显示器。
-
当使用 Screen.AllScreens 时,数组中有 2 个,但是我无法从这里获得监视器的“好”名称。
-
现在在家。我可以确认这个错误。检查 CIM_LogicalDevice 时,我确实看到两个监视器为 Win32_PnPEntity,但其中只有一个是 Win32_DesktopMonitor 类型。 (Vista,64 位。)
-
您找到解决方案/解决方法了吗?我遇到了同样的问题。