【C++】Visual Studio 2010 如何得知電腦休眠/待機狀態使用 WM_POWERBROADCAST
有兩種方式 首先開啟[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.");
{
if (message == WM_POWERBROADCAST)
{
if (wParam== PBT_APMSUSPEND)//休眠
AfxMessageBox(L"System is suspending operation.");
}
return CDialogEx::WindowProc(message, wParam, lParam);
}
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()
ON_WM_POWERBROADCAST()
END_MESSAGE_MAP()
UINT CTestPowerDlg::OnPowerBroadcast(UINT nPowerEvent, UINT nEventData)
{
if (nPowerEvent == PBT_APMSUSPEND)//休眠
AfxMessageBox(L"System is suspending operation.");
{
if (nPowerEvent == PBT_APMSUSPEND)//休眠
AfxMessageBox(L"System is suspending operation.");
return CDialogEx::OnPowerBroadcast(nPowerEvent, nEventData);
}
}
第三種 新增訊息 : ClientTool 是用這個方式
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_POWERBROADCAST, &CRtkDashClientDlg::OnPowerMsg)
END_MESSAGE_MAP()
{
#if 1
switch(wParam)
{
case PBT_APMQUERYSUSPEND: //進入suspend
m_AdaptOpened = FALSE;
::AfxMessageBox("PWD to sleep");
break;
case PBT_APMRESUMEAUTOMATIC: //resume回來
while(ChkRtkAdapter() == false)
{
Sleep(1000);
}
break;
}
#endif
return TRUE;
}
from : http://rockpenny.pixnet.net/blog/post/828136-%E3%80%90c%2B%2B%E3%80%91visual-studio-2010-%E5%A6%82%E4%BD%95%E5%BE%97%E7%9F%A5%E9%9B%BB%E8%85%A6%E4%BC%91%E7%9C%A0-%E5%BE%85%E6%A9%9F
沒有留言:
張貼留言