是否有可能使用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也会报告连接。 简而言之,除了像连接光线传感器或网络摄像头并将其指向监视器电源灯之类的自制方法之外,没有其他检查方法 :)