使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入睡眠或关闭显示器。 系统会自动侦测活动,例如本机键盘或鼠标器输入、服务器活动以及变更 windows 焦点。不会自动侦测的活动包括磁盘或CPU活动以及视频显示。 在没有ES_CONTINUOUS的情况下调用SetThreadExecutionState只会重置空闲计时器;为了保持显示器或系统处于工作状态,线程必须定期调用SetThreadExecutionState。 若要在电源管理的计算机上正常运行,传真服务器、应答机、备份代理和网络管理应用程序等应用程序在处理事件时必须同时使用ES_SYSTEM_REQUIRED和ES_CONTINUOUS。视频播放器和演示文稿应用程序等多媒体应用程序在长时间显示视频而没有用户输入时必须使用ES_DISPLAY_REQUIRED。文字处理程序、电子表格、浏览器和游戏不需要呼叫SetThreadExecutionState。 您只需调用它,它就会应用于调用线程。
Public Declare Function SetThreadExecutionState Lib "Kernel32" (ByVal esFlags as Long) as Long
Public Const ES_AWAYMODE_REQUIRED = &h40
Public Const ES_CONTINUOUS = &h80000000
Public Const ES_DISPLAY_REQUIRED = &h2
Public Const ES_SYSTEM_REQUIRED = &h1
Public Const ES_USER_PRESENT = &h4
Dim Ret as Long
'System on monitor off
Ret = SetThreadExecutionState(ES_Continuous + ES_System_Required + ES_Awaymode_Required)
'System and monitor on
Ret = SetThreadExecutionState(ES_Continuous + ES_Display_Required + ES_Awaymode_Required)
2条答案
按热度按时间nukf8bse1#
某个程序使用
SetThreadExecutionState
要求Windows不睡眠。设置线程执行状态
使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入睡眠或关闭显示器。
系统会自动侦测活动,例如本机键盘或鼠标器输入、服务器活动以及变更 windows 焦点。不会自动侦测的活动包括磁盘或CPU活动以及视频显示。
在没有ES_CONTINUOUS的情况下调用SetThreadExecutionState只会重置空闲计时器;为了保持显示器或系统处于工作状态,线程必须定期调用SetThreadExecutionState。
若要在电源管理的计算机上正常运行,传真服务器、应答机、备份代理和网络管理应用程序等应用程序在处理事件时必须同时使用ES_SYSTEM_REQUIRED和ES_CONTINUOUS。视频播放器和演示文稿应用程序等多媒体应用程序在长时间显示视频而没有用户输入时必须使用ES_DISPLAY_REQUIRED。文字处理程序、电子表格、浏览器和游戏不需要呼叫SetThreadExecutionState。
您只需调用它,它就会应用于调用线程。
https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setthreadexecutionstate
从我的网站https://winsourcecode.blogspot.com/2020/05/keepdisplayon-runs-program-preventing.html
stszievb2#
尝试安装微软的免费PowerToys实用程序,然后使用该实用程序的Awake部分。您可以在here上了解更多信息。