我想确定是否通过DisplayPort连接(当前有效)显示器(为了我的目的,我可以假设未通过DP连接的显示器是DVI连接。)是否有任何Windows API来获取此信息信息?
我没有看到任何有关如何在displayport.org上进行此操作的信息,尽管维基百科确实提到我可以从EDID中读取一些信息。我也在使用C#的WmiMonitorID System.Management接口时发现了一些代码片段(.NET或C ++解决方案都没问题),但这似乎没有提供详细信息。
需要NVidia或ATI特定扩展的解决方案也是可以接受的,前提是它们使用当前产品。
答案 0 :(得分:0)
我似乎找到了使用WmiMonitorConnectionParams类的解决方案。 VideoOutputTechnology 字段映射到D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY枚举。
在初始测试中,笔记本系统返回D3DKMDT_VOT_DVI,DP连接显示器返回D3DKMDT_VOT_DISPLAYPORT_EXTERNAL。
e.g。
using System.Management;
...
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 );
}
}
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 );
}
}
这似乎有效 - 但我仍然对任何其他方法感兴趣。