Обнаружить, если монитор находится на С#

Можно ли определить, включен ли пользовательский монитор с помощью С#?

Sp

Ответы

Ответ 1

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

Ответ 2

Все свойство Active указывает, что Windows использует дисплей или нет. Также DVI/HDMI будет сообщать о соединении, даже когда дисплей выключен. Короче говоря, нет способа проверить что-то самодельное - например, подключить датчик света или веб-камеру и направить его на индикатор питания монитора.

Ответ 3

Это невозможно: нет возможности проверить, включен ли монитор. Вы можете проверить, включен ли дополнительный монитор: используйте System.Windows.Forms.Screen.AllScreens