省電力機能を抑止する

アプリケーションによっては、そのアプリケーションが起動している間は、スタンバイや休止状態などの省電力機能を無効にしたいことがあります。 しかし、アプリケーションを使用するたびに「電源のプロパティ」の設定を変更するのは、現実的ではありません。

パソコンが省電力状態に移行しようとする時に、各アプリケーションにWINDOWSメッセージ「WM_POWERBROADCAST」が送られます。このメッセージのWPARAMの値が「PBT_APMQUERYSUSPEND」の時に、「BROADCAST_QUERY_DENY」を返すことで省電力機能を抑止することができます。

// MainFrame.h
afx_msg LRESULT OnPowerBroadcast(WPARAM wParam, LPARAM lParam);
 
// MainFrame.cpp
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    ON_MESSAGE(WM_POWERBROADCAST, OnPowerBroadcast)
END_MESSAGE_MAP()
 
LRESULT CMainFrame::OnPowerBroadcast(WPARAM wParam, LPARAM lParam)
{
    switch(wParam)
    {
    // サスペンドへ移行
    case PBT_APMSUSPEND:
        break;
    // サスペンド移行確認(WindowsXP まで)
    case PBT_APMQUERYSUSPEND:
        return BROADCAST_QUERY_DENY;
    // 復帰
    case PBT_APMRESUMEAUTOMATIC:
    case PBT_APMRESUMESUSPEND:
        break;
    default:
        break;
    }
}