检测监视器是否在c#上

时间:2010-10-12 09:03:44

标签: c#

是否可以使用c#检测用户监视器是否已打开?

SP

3 个答案:

答案 0 :(得分:18)

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"];
    }
}

答案 1 :(得分:4)

所有Active属性都会告诉您Windows是否正在使用显示器。即使显示屏关闭,DVI / HDMI也会报告连接。简而言之,没有其他方法可以检查除自制之外的东西 - 例如连接光传感器或网络摄像头并将其指向显示器的电源指示灯:)

答案 2 :(得分:-4)

无法执行此操作:无法检查显示器是否已开启。您可以检查是否启用了辅助监视器:使用System.Windows.Forms.Screen.AllScreens