Я бы хотел контролировать подсветку ЖК-дисплея. Во-первых, я использую код, как показано ниже:
// Turn off monitor
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2);
// Turn on monitor
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) -1);
// Low power monitor
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 1);
Но программа будет зависать на SendMessage(). Я нашел тему disscuss для решения проблемы зависания (Use: SendMessageTimeout)
// Turn on monitor
SendMessageTimeout(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) -1, SMTO_ABORTIFHUNG, 100, NULL);
// Turn off monitor
SendMessageTimeout(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2, SMTO_ABORTIFHUNG, 100, NULL);
// Low power monitor
SendMessageTimeout(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 1, SMTO_ABORTIFHUNG, 100, NULL);
Моя проблема заключается в том, что программа не может включить монитор.
Мой процесс: выключить монитор → подождать 10 секунд → включить монитор.
Монитор можно отключить, не удается включить монитор через 10 секунд, но я вижу, что монитор работает очень короткое время через 10 секунд.
Может ли кто-нибудь сказать мне, что случилось? Благодарю!
Я нашел на платформе Windows 8, могу отправить ключ в систему, чтобы включить ЖК-дисплей после выключения ЖК-дисплея через
SendMessageTimeout(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2, SMTO_ABORTIFHUNG, 100, NULL);
Я не знаю почему, но на самом деле это хорошо работает...
INPUT in[1];
KEYBDINPUT kb;
kb.wVk = VK_CONTROL;
in[0].type = INPUT_KEYBOARD;
in[0].ki = kb;
SendInput(1, in, sizeof(in));