我想出了powershell解决方案:
$HDMI_Monitors = 0;
$wmiobject = (get-wmiobject -namespace root\WMI -computername localhost -Query "Select * from WmiMonitorConnectionParams")
foreach ($letter in $wmiobject)
{
if($letter["VideoOutputTechnology"] -eq 5) #HDMI cable have value of 5
{
HDMI_Monitors += 1;
}
}
Write-Host "Number of connected HDMI cables : $HDMI_Monitors"
Run Code Online (Sandbox Code Playgroud)
这将列出没有。连接的HDMI 电缆。
它从VideoOutputTechnology抓取所有显示器并仅计算HDMI。HDMI 总是有 5 个值。
积分:此处更新:1 c# 代码:
$HDMI_Monitors = 0;
$wmiobject = (get-wmiobject -namespace root\WMI -computername localhost -Query "Select * from WmiMonitorConnectionParams")
foreach ($letter in $wmiobject)
{
if($letter["VideoOutputTechnology"] -eq 5) #HDMI cable have value of 5
{
HDMI_Monitors += 1;
}
}
Write-Host "Number of connected HDMI cables : $HDMI_Monitors"
Run Code Online (Sandbox Code Playgroud)
原因:WmiMonitorConnectionParams数组返回外部显示器的数量及其信息,包括VideoOutputTechnology、InstanceName、Active。我们需要VideoOutputTechnology来检查 value 是否为 5,然后对其进行计数。D3DKMDT_VOT_HDMI=5积分:docs.microsoft.com & comment & wutils.com。.
更新:2 vbscript 代码:
int HDMI_Monitors = 0;
ManagementClass mClass = new ManagementClass(@"\\localhost\ROOT\WMI:WmiMonitorConnectionParams");
foreach (ManagementObject mObject in mClass.GetInstances())
{
if (mObject["VideoOutputTechnology"].Equals(5)) //Because D3DKMDT_VOT_HDMI = 5
{
HDMI_Monitors += 1;
}
}
Console.WriteLine("Number of connected HDMI cables : " + HDMI_Monitors.ToString());
Run Code Online (Sandbox Code Playgroud)
与 c# 代码中解释的意识形态相同。仅用于Visual Basic、vbscript、VBA、vbs等。 积分:wutils.com。
更新:3 C++ 代码
Dim HDMI_Monitors
HDMI_Monitors = 0
For Each Instance In GetObject("WINMGMTS:\\localhost\ROOT\WMI").InstancesOf("WmiMonitorConnectionParams", 1)
If Instance.VideoOutputTechnology = 5 Then
HDMI_Monitors = + 1
End if
Next
Wscript.Echo "No. of connected HDMI cables :" & HDMI_Monitors
Run Code Online (Sandbox Code Playgroud)
积分:这里