检测监视器是否在c#上

Ste*_*ven 14 c#

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

SP

我也发现这篇文章很有帮助

http://www.netframeworkdev.com/net-base-class-library/msmonitorclass-2114.shtml

cod*_*zen 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"];
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我永远不会对WMI中隐藏的大量信息感到惊讶. (7认同)
  • 这真的有用吗?如果我针对关闭的监视器运行代码,它仍然显示active = true.试用VGA和DVI类型.也许我的显示器只是笨... (4认同)
  • 这不适用于我通过 VGA、DVI 和 HDMI 连接的任何显示器。对于所有 3,它总是返回 true。 (3认同)