通过SetThreadExecutionState API实现阻止系统休眠。
<span style="font-size:14px;">[DllImport("kernel32.dll")]
public static extern uint SetThreadExecutionState(ExecutionFlag flag);
public enum ExecutionFlag : uint
{
System = 0x00000001,
Display = 0x00000002,
Continus = 0x80000000
}</span>
- 只使用Continus参数时,则是回复系统休眠策略。
- 不使用Continus参数时,实现阻止系统休眠或显示器关闭一次。
- 组合使用Continus参数时,实现阻止系统休眠或显示器关闭至线程终止。
<span style="font-size:14px;">private void PreventSleep()
{
SetThreadExecutionState(ExecutionFlag.System |
ExecutionFlag.Display | ExecutionFlag.Continus);
}
private void RestoreSleep()
{
SetThreadExecutionState(ExecutionFlag.Continus);
}</span>