SetThreadExecutionState阻止手动睡眠

时间:2014-01-31 18:57:48

标签: windows winapi

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

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

如何在SetThreadExecutionState生效期间允许用户手动将计算机置于睡眠状态?

1 个答案:

答案 0 :(得分:7)

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

  

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