我正在尝试在多显示器设置中识别一个屏幕,以保存一些链接到该屏幕的数据。重新启动后,如何可靠地识别屏幕?
我知道Screen
.Net 中的类,但Screen.DeviceName
似乎并没有始终指向一个屏幕(例如在安装新的图形驱动程序之后)。
我正在尝试在多显示器设置中识别一个屏幕,以保存一些链接到该屏幕的数据。重新启动后,如何可靠地识别屏幕?
我知道Screen
.Net 中的类,但Screen.DeviceName
似乎并没有始终指向一个屏幕(例如在安装新的图形驱动程序之后)。
尝试 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"]);
我通过使用EnumDisplayDevices
API 获取 DeviceID 解决了这个问题。每个屏幕似乎都是唯一的,例如在驱动程序更新后不会改变。
WMI 对我来说是不可能的,因为我之前尝试过它,它只返回一个带有我的多显示器设置的显示器。