windows - 在 Windows 上检测 DisplayPort(相对于 DVI?)?

标签 windows winapi graphics

我想确定(当前事件的)显示器是否通过 DisplayPort 连接(出于我的目的,我可以假设未通过 DP 连接的显示器是 DVI 连接。)是否有任何 Windows API 可以获取此信息信息?

虽然维基百科确实提到我可以从 EDID 中读取一些信息,但我没有在 displayport.org 上看到有关如何处理此问题的任何信息。我还发现了一些关于使用 C# 中的 WmiMonitorID System.Management 接口(interface)的代码片段(.NET 或 C++ 解决方案都可以),但这似乎没有提供详细信息。

需要 NVidia 或 ATI 特定扩展的解决方案也是可以接受的,前提是它们可以与当前产品一起使用。

最佳答案

我似乎找到了使用 WmiMonitorConnectionParams 的解决方案类(class)。 VideoOutputTechnology 字段映射到 D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY枚举。

在初始测试中,我得到了笔记本系统的 D3DKMDT_VOT_DVI 返回值和来自 DP 连接显示器的 D3DKMDT_VOT_DISPLAYPORT_EXTERNAL 返回值。

例如

using System.Management;

<p>...</p> <pre><code> ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM WmiMonitorConnectionParams"); foreach (ManagementObject queryObj in searcher.Get()) { Console.WriteLine("WmiMonitorConnectionParams:"); foreach (PropertyData pd in queryObj.Properties) { string name = pd.Name; string val = pd.Value.ToString(); Console.WriteLine("{0} = {1}", name, val ); } } </code></pre>

这似乎可行 - 但我仍然对任何其他方法感兴趣。

关于windows - 在 Windows 上检测 DisplayPort(相对于 DVI?)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8229377/

相关文章:

c++ - Windows API全局钩子(Hook)的无限范围

c++ - EnumWindows 不工作

java - 将 ACM 图形窗口转换为图像文件

linux - Windows 下 Cygwin 的执行速度比 VirtualBox 中 Linux 的执行速度慢

windows - 从 Windows 批处理文件向控制台回显空白(空)行

windows - Windows 上的 IIS 和 SSL - 推荐的内容。 PCT、SSL、TLS

windows - 如何将 SHCreateItemFromParsingName 与 shell 命名空间中的名称一起使用?

java - JPanel 仅显示添加的第一个自定义 JComponent

java - 在我的屏幕上放置重新启动按钮

CreateProcessA %appdata%