有兩種方式 首先開啟[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官網

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