SetThreadExecutionState 函数 (winbase.h)

使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入睡眠状态或关闭显示器。

语法

EXECUTION_STATE SetThreadExecutionState(
  [in] EXECUTION_STATE esFlags
);

参数

[in] esFlags

线程的执行要求。 此参数可使用以下一个或多个值。

含义
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 值组合使用,则调用将失败,并且不会设置任何指定的状态。

返回值

如果函数成功,则返回值为上一个线程执行状态。

如果函数失败,则返回值为 NULL。

注解

系统自动检测本地键盘或鼠标输入、服务器活动和更改窗口焦点等活动。 未自动检测到的活动包括磁盘或 CPU 活动以及视频显示。

在不ES_CONTINUOUS的情况下调用 SetThreadExecutionState 只是重置空闲计时器;若要使显示或系统保持工作状态,线程必须定期调用 SetThreadExecutionState

若要在电源管理计算机上正确运行,传真服务器、应答计算机、备份代理和网络管理应用程序等应用程序在处理事件时必须同时使用 ES_SYSTEM_REQUIREDES_CONTINUOUS 。 多媒体应用程序(如视频播放器和演示应用程序)在长时间显示视频时,必须使用 ES_DISPLAY_REQUIRED ,而无需用户输入。 文字处理器、电子表格、浏览器和游戏等应用程序不需要调用 SetThreadExecutionState

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

若要启用离开模式,应用程序同时使用ES_AWAYMODE_REQUIREDES_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

另请参阅

电源管理功能

SetSuspendState

SetSystemPowerState

WM_POWERBROADCAST