EXECUTION_STATE SetThreadExecutionState(
[in] EXECUTION_STATE esFlags
);
[in] esFlags
线程的执行要求。 此参数可使用以下一个或多个值。
Value 含义
ES_AWAYMODE_REQUIRED
0x00000040
启用客场模式。 必须使用 ES_CONTINUOUS 指定此值。
客机模式应仅由媒体录制和媒体分发应用程序使用,这些应用程序必须在台式计算机上执行关键后台处理,而计算机似乎处于睡眠状态。 请参阅“备注”。
ES_CONTINUOUS
0x80000000
通知系统,要设置的状态应保持有效状态,直到下一次调用使用 ES_CONTINUOUS ,另一个状态标志将被清除。
ES_DISPLAY_REQUIRED
0x00000002
通过重置显示空闲计时器强制显示打开。
ES_SYSTEM_REQUIRED
0x00000001
通过重置系统空闲计时器强制系统处于工作状态。
ES_USER_PRESENT
0x00000004
不支持此值。 如果 ES_USER_PRESENT 与其他 esFlags 值组合在一起,则调用将失败,并且不会设置任何指定状态。
通过创建一个线程
DWORD WINAPI prevent_close (LPVOID lpParam)
{
//每隔60s设置一下执行状态防止熄屏
while (1)
{
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED|ES_DISPLAY_REQUIRED| 0x00000040 );//屏幕常亮
//SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED| 0x00000040 );//阻止睡眠
Sleep(1000*60);
}
return 0;
}
启动线程
DWORD threadID;
HANDLE hThread;
hThread = ::CreateThread(NULL,0,prevent_close ,(LPVOID)this,0,&threadID);
可以保持屏幕常亮
取消阻止状态
SetThreadExecutionState(ES_CONTINUOUS);