Windows11调用SetThreadExecutionState(ES_CONTINUOUS)无法恢复自动睡眠怎么办?
恢复Windows 11自动睡眠计时的正确方法
你之前调用SetThreadExecutionState(ES_CONTINUOUS)无法恢复自动睡眠的核心原因是:ES_CONTINUOUS仅用于标记状态需持续生效,单独传递它并不会清除之前设置的ES_SYSTEM_REQUIRED标记——这个标记会持续阻止系统进入睡眠流程。
正确的恢复操作如下:
- 任务结束后,需调用
SetThreadExecutionState(0)来重置系统的执行状态标记。部分场景下可先调用SetThreadExecutionState(ES_CONTINUOUS)再调用SetThreadExecutionState(0),确保之前的持续阻止状态被彻底清除。 - 若你多次调用过
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED),恢复调用的次数需要与之前的阻止调用次数匹配,才能完全清除累积的唤醒请求。
同时可排查以下干扰因素:
- 用管理员权限打开命令提示符,执行
powercfg /requests命令,查看是否有其他进程持有系统唤醒请求,这类进程会持续阻止睡眠。 - 检查电源设置中的睡眠选项是否被修改,比如是否误设为“从不”睡眠,或者“快速启动”功能是否开启(部分场景下快速启动会影响睡眠恢复逻辑)。
C++代码示例:
// 任务运行时阻止系统睡眠 SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED); // 任务结束后恢复自动睡眠 SetThreadExecutionState(ES_CONTINUOUS); SetThreadExecutionState(0);
内容的提问来源于stack exchange,提问作者Anton111111
相关产品推荐
相关产品推荐

