程序中的一个终端窗口多数时间处于无人值守状态,并实时联网工作,为避免系统休眠、显示器关屏等情况,可调用kernel32.dll的SetThreadExecutionState函数,此函数的作用是通知操作系统本程序正在使用中,不得进入睡眠状态或关闭显示器。
*声明
DECLARE integer SetThreadExecutionState IN kernel32.dll integer
该函数有三个参数,分别是:
ES_SYSTEM_REQUIRED = 0x00000001 &&通过重置系统空闲计时器强制系统处于工作状态。
ES_DISPLAY_REQUIRED = 0x00000002 &&通过重置显示器空闲计时器强制显示器打开。
ES_CONTINUOUS = 0x80000000 &&通知系统正在设置的状态应保持有效,直到下一次使用ES_CONTINUOUS的调用(只带ES_CONTINUOUS一个参数调用)
实际调用时,必须组合调用,才能实现需求:
SetThreadExecutionState(0x00000001+0x00000002+0x80000000) &&组合调用
窗口关闭时,必须在destroy事件或QueryUnload事件中只带ES_CONTINUOUS一个参数调用一次:
ES_CONTINUOUS = 0x80000000
SetThreadExecutionState(ES_CONTINUOUS) &&通知操作系统可以按原计划休眠或关闭显示器。