SetThreadExecutionState 函数 (winbase.h)
使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入睡眠状态或关闭显示器。
语法
EXECUTION_STATE SetThreadExecutionState(
[in] EXECUTION_STATE esFlags
);
参数
[in] esFlags
线程的执行要求。 此参数可使用以下一个或多个值。
返回值
如果函数成功,则返回值为上一个线程执行状态。
如果函数失败,则返回值为 NULL。
注解
系统自动检测本地键盘或鼠标输入、服务器活动和更改窗口焦点等活动。 未自动检测到的活动包括磁盘或 CPU 活动以及视频显示。
在不ES_CONTINUOUS的情况下调用 SetThreadExecutionState 只是重置空闲计时器;若要使显示或系统保持工作状态,线程必须定期调用 SetThreadExecutionState。
若要在电源管理计算机上正确运行,传真服务器、应答计算机、备份代理和网络管理应用程序等应用程序在处理事件时必须同时使用 ES_SYSTEM_REQUIRED 和 ES_CONTINUOUS 。 多媒体应用程序(如视频播放器和演示应用程序)在长时间显示视频时,必须使用 ES_DISPLAY_REQUIRED ,而无需用户输入。 文字处理器、电子表格、浏览器和游戏等应用程序不需要调用 SetThreadExecutionState。
仅当需要系统执行后台任务(例如,在系统似乎处于睡眠状态时将电视内容或流媒体录制到其他设备的媒体应用程序绝对需要)时才应使用 ES_AWAYMODE_REQUIRED 值。 不需要关键后台处理或在便携式计算机上运行的应用程序不应启用离开模式,因为它会阻止系统通过进入真正的睡眠来节省电量。
若要启用离开模式,应用程序同时使用ES_AWAYMODE_REQUIRED和ES_CONTINUOUS;若要禁用离开模式,应用程序使用 ES_CONTINUOUS 调用 SetThreadExecutionState 并清除ES_AWAYMODE_REQUIRED。 启用离开模式后,使计算机进入睡眠状态的任何操作都会将其置于离开模式。 当系统继续执行不需要用户输入的任务时,计算机似乎处于睡眠状态。 离开模式不会影响睡眠空闲计时器;若要防止系统在计时器过期时进入睡眠状态,应用程序还必须设置 ES_SYSTEM_REQUIRED 值。
SetThreadExecutionState 函数不能用于阻止用户使计算机进入睡眠状态。 应用程序应尊重用户在合上笔记本电脑的盖子或按下电源按钮时预期会出现某种行为。
此函数不会停止屏幕保护程序执行。
示例
// Television recording is beginning. Enable away mode and prevent
// the sleep idle time-out.
//
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED);
//
// Wait until recording is complete...
//
//
// Clear EXECUTION_STATE flags to disable away mode and allow the system to idle to sleep normally.
//
SetThreadExecutionState(ES_CONTINUOUS);
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | winbase.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |