有兩種方式 首先開啟[MFC類別精靈]

第一種新增虛擬函式 virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);

LRESULT CTestPowerDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
  if (message == WM_POWERBROADCAST)
 {
    if (wParam== PBT_APMSUSPEND)//休眠
      AfxMessageBox(L"System is suspending operation.");

  }
  return CDialogEx::WindowProc(message, wParam, lParam);
}

 

第二種新增訊息 afx_msg UINT OnPowerBroadcast(UINT nPowerEvent, UINT nEventData);

BEGIN_MESSAGE_MAP(CTestPowerDlg, CDialogEx)
 ON_WM_POWERBROADCAST()
END_MESSAGE_MAP()

 

UINT CTestPowerDlg::OnPowerBroadcast(UINT nPowerEvent, UINT nEventData)
{
  if (nPowerEvent == PBT_APMSUSPEND)//休眠
    AfxMessageBox(L"System is suspending operation.");

  return CDialogEx::OnPowerBroadcast(nPowerEvent, nEventData);
}

 

其他訊息類別請參考 MSDN官網

假設不是視窗程式請參考 這裡 & 這裡

創作者介紹

亂七八糟

Penny 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 尚修 楊
  • 非常實用 謝謝分享!!
    但有個問題想向您請教@@
    用您的方法在Win7下都可以順利的偵測系統狀態,
    但發現使用XP時, 同樣的方式卻偵測不到進入休眠時的狀態...
    (
    如果是透過手動的方式進入休眠(ex.cmd指令),
    則一樣可正常偵測到進入休眠的狀態,
    但如果是在電源管理裡設定幾%時進入休眠,
    會發現在這種情況下將不會被偵測到休眠狀態><
    以Win7測試過, 則完全不會有這問題...
    )
    不知道樓主有沒有解決的辦法或建議?
    謝謝!!