2012-05-19 161 views
5

我想在多显示器设置中识别一个屏幕以保存链接到该屏幕的一些数据。我怎样才能可靠地确定一个屏幕,并在重新启动后?识别显示器

我知道在.Net中的Screen类,但Screen.DeviceName似乎并不一致地指向一个屏幕(例如安装新的图形驱动程序后)。

+0

你真的希望能够改变你的设备驱动程序,并仍然跟踪某个屏幕?真正的问题是,你为什么要这么做? –

+0

那么,因为我正在写一个多监视器工具,并需要保存每个屏幕的设置。 –

回答

0

我通过得到解决了这个DeviceID与EnumDisplayDevices API。似乎每个屏幕都是唯一的,并且在驱动程序更新后不会更改。

WMI对我来说是不可能的,因为我之前尝试过它,它只会返回一台显示器与我的多显示器设置。

0

尝试使用WMI而不是WinForms。

以下职位说明如何获取监视器和它们的细节(S DisplayDetails 类如):Monitor ID and Serial Number

编辑:

我的建议:

using System.Management; 

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_DesktopMonitor");  
foreach (ManagementObject obj in searcher.Get()) 
    Console.WriteLine("PNP Device ID: {0}", obj ["PNPDeviceID"]); 
+0

我有两个监视器,该查询只返回一个 –