我想确定(当前事件的)显示器是否通过 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/