我想控制LCD背光。 首先,我使用如下代码:
// 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 topic解决了悬挂问题(使用: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秒后打开很短的时间。
谁能告诉我什么错了?谢谢!
答案 0 :(得分:0)
我在Windows 8平台上发现,通过
关闭LCD后可以向系统发送一个键来打开LCDSendMessageTimeout(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));