首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VC/MFC 防止系統進入睡眠/待機模式的 API 方案

     編輯:程式設計綜合問答

核心 API

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); // 恢復原狀態
}

MFC 整合建議

  • 在 CWinApp::InitInstance 中調用 PreventSleep(),ExitInstance 中恢復。
  • 或僅在關鍵業務 (視頻播放、文件下載、燒錄) 期間調用,避免長期阻止睡眠影響用戶體驗/筆記本續航。
  • 參考:CSDN 博客、Cnblogs

注意

僅影響「自動睡眠/關屏」,用戶手動合蓋/選擇睡眠仍生效。不可濫用,應在確實需要時啟用,及時釋放。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved