C# 检查监视器是否已连接
我必须制作一个简单的程序,向服务器报告监视器的状态(是开/关还是未连接)。 到目前为止,我使用的是我在另一次讨论中发现的这个方法,但它每次都会返回到真值,即使我断开了显示器的连接C# 检查监视器是否已连接,c#,status,monitor,C#,Status,Monitor,我必须制作一个简单的程序,向服务器报告监视器的状态(是开/关还是未连接)。 到目前为止,我使用的是我在另一次讨论中发现的这个方法,但它每次都会返回到真值,即使我断开了显示器的连接 public static Boolean isMonitorActive() { Boolean active = false; var query = "select * from WmiMonitorBasicDisplayParams";
public static Boolean isMonitorActive()
{
Boolean active = false;
var query = "select * from WmiMonitorBasicDisplayParams";
using (var wmiSearcher = new ManagementObjectSearcher("\\root\\wmi", query))
{
var results = wmiSearcher.Get();
foreach (ManagementObject wmiObj in results)
{
// get the "Active" property and cast to a boolean, which should
// tell us if the display is active. I've interpreted this to mean "on"
active = (Boolean)wmiObj["Active"];
return active;
}
}
return active;
}
我必须每2-3分钟检查一次监视器的状态,所以我需要在系统中使用与MonitorCout变量不同的东西,因为它已经初始化,并且从程序的开始到结束都保持不变(如果我没有弄错的话)。
感谢阅读和帮助。这里有一个方法:@wonko79
AllScreens
在程序中仅静态初始化一次,因此如果用户断开显示器,之后不会更改。这在我给出的链接中的答案中得到了解决。@MatthewWatson正如我在问题中所说的,我不能使用所有屏幕,因为我必须检查监视器在程序执行过程中何时断开连接。@user2190639是的,但请看-它给出了一个使用Windows APIEnumDisplayMonitors()
函数的解决方案。噢,谢谢!我错过了那部分。无论如何,我不知道问题是否是因为我在笔记本电脑上,但当我连接外部显示器并拔下插头进行测试时,我总是得到monCount=1。代码似乎很难工作,因为当我使用2监视器monCount=2时