【问题标题】:Identifying displays识别显示器
【发布时间】:2012-05-19 21:37:21
【问题描述】:

我正在尝试在多显示器设置中识别一个屏幕,以保存一些链接到该屏幕的数据。重新启动后,如何可靠地识别屏幕?

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

【问题讨论】:

  • 您真的希望能够更改您的设备驱动程序并仍然跟踪某个屏幕吗?真正的问题是,您为什么要这样做?
  • 好吧,因为我正在写一个小的多显示器工具,需要为每个屏幕保存设置。

标签: c# .net uniqueidentifier multiple-monitors


【解决方案1】:

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

【讨论】:

  • 我有两台显示器,但该查询只返回一个
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2021-04-23
    相关资源
    最近更新 更多