VC++阻止电脑熄屏与睡眠

EXECUTION_STATE SetThreadExecutionState(
  [in] EXECUTION_STATE esFlags
);
[in] esFlags

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

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

通过创建一个线程

DWORD WINAPI prevent_close (LPVOID lpParam)
{
	//每隔60s设置一下执行状态防止熄屏
	while (1)
	{
		SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED|ES_DISPLAY_REQUIRED| 0x00000040 );//屏幕常亮
		//SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED| 0x00000040 );//阻止睡眠
		Sleep(1000*60);
	}
	return 0;
}

启动线程

DWORD threadID;
HANDLE hThread;
hThread = ::CreateThread(NULL,0,prevent_close ,(LPVOID)this,0,&threadID);

可以保持屏幕常亮
取消阻止状态

SetThreadExecutionState(ES_CONTINUOUS);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百口可乐__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值