【发布时间】:2010-10-12 09:03:44
【问题描述】:
是否可以使用c#检测用户监视器是否打开?
【问题讨论】:
-
您的意思是使用前面的电源按钮,还是自动关闭以节省电量?
标签: c#
是否可以使用c#检测用户监视器是否打开?
【问题讨论】:
标签: c#
WMI 可能会有所帮助。
在 Vista+ 中,有 WmiMonitorBasicDisplayParams 类,其中“Active”属性告诉您显示器是否处于活动状态。
这是一个适合我的例子:
using System.Management;
// ...
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"
var active = (Boolean)wmiObj["Active"];
}
}
【讨论】:
Active 属性所做的只是告诉您 Windows 是否正在使用显示器。即使显示器关闭,DVI/HDMI 也会报告连接。简而言之,除了自制的东西之外,没有其他方法可以检查——比如连接光传感器或网络摄像头并将其指向显示器的电源灯:)
【讨论】: