在Windows上检测DisplayPort(与DVI?)?

时间:2011-11-22 15:34:29

标签: windows winapi graphics

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

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

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

1 个答案:

答案 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 ); } }

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