1. 程式人生 > >VC如何禁止自動屏保,休眠等節電模式

VC如何禁止自動屏保,休眠等節電模式

xp下測試有效

Windows在啟動螢幕保護程式前會向當前啟用的應用程式發WM_SYSCOMMAND訊息,其中wParam引數指定了即將執行的系統命令型別,值SC_SCREENSAVE表明這個訊息為螢幕保護啟動,攔截這個訊息並return即可阻止啟動螢幕保護,而值SC_MONITORPOWER為顯示器節電自動關閉的訊息,同理可return。下面為程式開啟後,阻止系統這兩個動作的程式碼。

;為示例視窗類新增訊息響應函式WM_SYSCOMMAND
void CSample::OnSysCommand(UINT nID, LPARAM lParam)
{
      if (nID == SC_SCREENSAVE || nID == SC_MONITORPOWER)
      {
            return;
      }
      CSkinDialog::OnSysCommand(nID, lParam);
}

     作業系統傳送給窗體的訊息送給WindowProc虛擬函式所截獲,其中引數messageWM_POWERBROADCAST時,表明系統開始電源處理方面訊息通知。第二個引數PBT_APMQUERYSUSPEND則是待機,休眠的請求,過濾掉這個訊息,就可以阻止系統進入待機或休眠等模式。下面是示例程式碼:

;為示例視窗類新增虛擬函式WindowProc

LRESULT CSample::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)

{

// TODO: Add your specialized code here and/or call the base class

if (message == WM_POWERBROADCAST && wParam == PBT_APMQUERYSUSPEND)

{

return BROADCAST_QUERY_DENY;

}

return CSkinDialog::WindowProc(message, wParam, lParam);

}