SetThreadExecutionState阻止手动睡眠

Col*_*nee 5 windows winapi

在Windows 7上,我看到SetThreadExecutionState使用该参数调用ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED阻止用户手动将系统置于睡眠状态.

打开"开始"菜单并选择"睡眠"后,显示屏将关闭,但我的应用程序将继续处理.风扇继续全速运行并且在唤醒计算机时,我可以看到睡眠发生时正在进行的操作已经取得了进展.

如何让用户手动将计算机置于睡眠状态SetThreadExecutionState

Han*_*ant 8

包含ES_AWAYMODE_REQUIRED选项会导致此问题.引用MSDN文章:

仅当媒体应用程序绝对需要时,才应使用ES_AWAYMODE_REQUIRED值,该应用程序要求系统执行后台任务,例如在系统处于休眠状态时将电视内容或流媒体录制到其他设备.不需要关键后台处理或在便携式计算机上运行的应用程序不应启用离开模式,因为它会阻止系统通过进入真正的睡眠来节省电量.

  • 离开模式不会阻止用户让计算机进入睡眠状态。它改变了睡眠的定义。 (2认同)