Программно отключить монитор

Рейтинг: 2Ответов: 2Опубликовано: 28.03.2015

Доброго времени суток.

Возникла необходимость на некоторое время отключить программно монитор. Чем могу пользоваться: командной строкой (но вроде невозможно так), c++ (WinAPI наверно), ну на крайний случай c# с его .NET.

Искал, но находил советы вроде SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2);. Это мне не подходит, так как если после запуска такого когда дернуть мышь или клавиатуру, то монитор просыпается. Мне же надо отключить жестко, чтобы включить обратно можно было только программно.

Ответы

▲ 1

SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2); //выключить SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1); //включить

Или:

HWND h = FindWindow(0, 0);
SendMessage(h, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
SendMessage(h, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
▲ 1

Что если игнорировать сообщения посылаемые окну?

bool Flag=1;
 if (Flag=0) {
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
};