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