3

我正在开发一个通过 VNC 支持远程显示的 Windows 应用程序。通常,远程显示器将是唯一的可视界面。但是,在某些情况下,用户会希望使用物理监视器查看应用程序。如果连接了物理连接的显示器切换到特定输入(可能是 DVI 或 HDMI),我需要能够检测到并关闭 VNC。是否可以检测连接的监视器是否正在主动显示某个输入?

我知道我可以获取有关所连接显示器的一些信息,Screen.AllScreens但其中没有任何内容似乎完全符合我的需要。Windows API 是否有一些方法可以为我提供这些信息?是否可以从 VESA/DDC 确定必要的信息?

4

1 回答 1

2

我没有任何开发 VNC 应用程序的经验,但也许一个建议可能会让你走上正确的道路。

下载wmiexplorer

  1. 运行程序
  2. 在这里您可以探索 WMI 中的不同类,这将是我认为您将获得的最低级别
  3. 转到查询选项卡并输入查询:"select * from Win32_DesktopMonitor"

我认为这是您可以用来找出有关显示器信息的信息。(我不确定哪些类有与监视器相关的信息)

特别是,请查看Win32_DesktopMonitor 类的可用性

更新

在远程机器上运行此查询描述和设备ID 和名称返回为“默认监视器”。在我的真机上,它以“通用 PnP 监视器”的形式返回,并且MonitorManufacturer有一套,而远程机器没有。您甚至可以将查询的监视器与Screen分辨率进行比较,或者可能SystemName在查询中返回与运行应用程序的计算机的系统名称进行比较。

使用ManagementObjectSearcher执行 WMI 查询。

编辑

您还可以像此处显示的示例那样对设备进行映射/交叉检查。请注意ClassGUIDMonitorDesktop 和 PnPEntity 之间的相同。

于 2014-02-12T23:45:02.347 回答