Detect if monitor is on c#

前端 未结 3 845
谎友^
谎友^ 2020-12-31 05:58

Is it possible to detect if the users monitor is turned on using c#?

Sp

相关标签:
3条回答
  • 2020-12-31 06:27

    WMI might help.

    In Vista+, there is the WmiMonitorBasicDisplayParams class, where the "Active" property tells you if the display is active.

    Here's an example which works for me:

    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"];
        }
    }
    
    0 讨论(0)
  • 2020-12-31 06:40

    This cannot be done: There is no way to check if the monitor is powered on. You can check if a secondary monitor is enabled: use System.Windows.Forms.Screen.AllScreens

    0 讨论(0)
  • 2020-12-31 06:42

    All the Active property does is tell you if Windows is using the display or not. Also DVI/HDMI will report a connection even when the display is turned off. In short, there is no method for checking other than something homemade--like hooking up a light sensor or webcam and pointing it at the monitor's power light :)

    0 讨论(0)
提交回复
热议问题