Проверьте, выключен ли дисплей системой управления питанием Windows - PullRequest
7 голосов
/ 30 июня 2011

Как программно проверить в Windows 7 и XP, отключено ли «управление питанием Windows» на дисплее? (Если бы я мог получить событие, это было бы еще лучше.)

Ответы [ 3 ]

7 голосов
/ 02 июля 2011

Не думаю, что это можно сделать для XP.В Windows 7 есть все виды вкусностей, связанных с управлением питанием. Windows API Code Pack - это набор управляемых оболочек, которые легко вызывать из C # или VB и которые отображают парадигмы Windows (например, приемники событий, сообщения Windows и указатели функций) в .NET (например, делегаты исобытия.) Из демонстрации управления питанием, поставляемой с пакетом кода, вы можете получить следующий код:

using Microsoft.WindowsAPICodePack.ApplicationServices;

// . . .
        PowerManager.IsMonitorOnChanged += new EventHandler(MonitorOnChanged);
// . . .
    void MonitorOnChanged(object sender, EventArgs e)
    {
        settings.MonitorOn = PowerManager.IsMonitorOn;
        AddEventMessage(string.Format("Monitor status changed (new status: {0})", PowerManager.IsMonitorOn ? "On" : "Off"));
    }

Редактировать:

Ссылки на пакет кода Windows API: Windows API Code Pack: где это?

Если вы хотите использовать его, как указано в этом посте, отметьте это: https://stackoverflow.com/a/27709672/846232

1 голос
/ 06 июля 2011

Ваше приложение получит сообщение WM_SYSCOMMAND с SC_MONITORPOWER в wParam (сначала убедитесь, что и wParam с 0xfff0).Он отправит аналогичное сообщение, когда заставка включится (SC_SCREENSAVE).Если ваша цель состоит в том, чтобы запретить отключение экрана, вы можете вернуть 0 для них, хотя это не сработает, если для пользователя установлен пароль.

0 голосов
/ 30 июня 2011
...