SetThreadExecutionState (Windows API),通知系統線程處於執行狀態,重置閒置計時器。
#include
// 程序啟動/關鍵操作開始時
void PreventSleep() {
// ES_CONTINUOUS: 持續有效,直到調用 ES_CONTINUOUS 移除
// ES_SYSTEM_REQUIRED: 強制系統保持工作狀態 (阻止睡眠/休眠)
// ES_DISPLAY_REQUIRED: 同時保持顯示器亮屏 (可選)
EXECUTION_STATE prev = SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED);
// 保存 prev 以便恢復
}
// 程序結束/關鍵操作結束時
void AllowSleep(EXECUTION_STATE prev) {
SetThreadExecutionState(ES_CONTINUOUS | prev); // 恢復原狀態
}
CWinApp::InitInstance 中調用 PreventSleep(),ExitInstance 中恢復。僅影響「自動睡眠/關屏」,用戶手動合蓋/選擇睡眠仍生效。不可濫用,應在確實需要時啟用,及時釋放。