【问题标题】:Detect HDMI connection when we are using setup box using c#当我们使用 c# 使用设置盒时检测 HDMI 连接
【发布时间】:2023-01-18 20:18:42
【问题描述】:

我在其中一个 Windows 媒体播放器中使用 wpf 应用程序,因此当我使用以下代码检测 HDMI 连接时,它始终显示断开连接,因为 HDMI 连接表示为主连接。当我在笔记本电脑上使用 HDMI 连接时,效果很好,有人可以针对上述情况建议代码更改吗

    public static int HdmiConnectionStatus()
    {
        int HDMI_Monitors = 0;
        ManagementClass mClass = new ManagementClass(@"\\localhost\ROOT\WMI:WmiMonitorConnectionParams");
        Log.Info("HdmiConnectionStatus ManagementClass ");
        
        if(mClass != null)
        {
            Log.Info(mClass);
            foreach (ManagementObject mObject in mClass.GetInstances())
                {
                    var ss = mObject["VideoOutputTechnology"];
                    Log.Info("HdmiConnectionStatus HDMI port Info :" + ss);
                    if (ss.ToString().StartsWith("5"))
                    {
                        int HDMIport = Convert.ToInt32(ss);
                        if (HDMIport == 5)
                        {
                            HDMI_Monitors += 1;
                        }
                    }


                }
        }
        else
        {
            Log.Info(" HdmiConnectionStatus Null ManagementClass ");

        }

        return HDMI_Monitors;
         
    }

【问题讨论】:

    标签: c# .net wpf windows hdmi


    【解决方案1】:

    我可以看到您使用非常具体的值 5 来获得 HDMI 连接,当您在笔记本电脑中连接 HDMI 电缆时,您将在 mObject 中获得两个值,一个是笔记本电脑屏幕,另一个是 HDMI 值 5,但在设置盒的情况下这种情况不会保持不变,请检查您的设置框的端口号,它可以是 5 或 10 我试过我的安装盒,我得到了 10 的值,这是代码

    public static int HdmiConnectionStatus()
    {
        int HDMI_Monitors = 0;
        ManagementClass mClass = new ManagementClass(@"\localhostROOTWMI:WmiMonitorConnectionParams");
        Log.Info("HdmiConnectionStatus ManagementClass ");
        
        if(mClass != null)
        {
            Log.Info(mClass);
            foreach (ManagementObject mObject in mClass.GetInstances())
                {
                    var ss = mObject["VideoOutputTechnology"];
                    Log.Info("HdmiConnectionStatus HDMI port Info :" + ss);
                    if (ss.ToString().StartsWith("5") || ss.ToString().StartWith("10"))
                    {
                        int HDMIport = Convert.ToInt32(ss);
                        if (HDMIport == 5 || HDMIport == 10)
                        {
                            HDMI_Monitors += 1;
                        }
                    }
    
    
                }
        }
        else
        {
            Log.Info(" HdmiConnectionStatus Null ManagementClass ");
    
        }
    
        return HDMI_Monitors;
         
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多