识别显示器

5

我正在尝试识别多显示器设置中的屏幕,以保存与该屏幕相关联的一些数据。如何可靠地识别屏幕,即使在重新启动后也是如此?

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


你真的期望能够更改设备驱动程序,并仍然跟踪特定屏幕吗?真正的问题是,你为什么要这样做? - Kendall Frey
嗯,因为我正在编写一个小型多监视器工具,需要为每个屏幕保存设置。 - Jelle Vergeer
2个回答

0

尝试使用WMI而不是WinForms。

以下帖子展示了如何获取显示器及其详细信息(例如DisplayDetails类):监视器ID和序列号

编辑:

我的建议:

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"]);

我有两个显示器,但查询只返回了一个。 - Antonio Bakula

0

我通过使用EnumDisplayDevices API获取DeviceID解决了这个问题。每个屏幕似乎都是唯一的,并且在驱动程序更新后也不会改变。

对于我来说,WMI不可行,因为我之前尝试过它,但它只返回我的多监视器设置中的一个监视器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接