Windows 7用のVisual Studio 2008 C++プロジェクトでは、電源状態遷移(サスペンド、休止状態、再開など)を通知したいと思っています。 WM_POWERBROADCAST
メッセージを監視するメッセージ専用ウィンドウを作成しました。ウィンドウが作成されると、私はPCをサスペンドします。例えばメッセージのみのウィンドウからの電源状態の変更通知
(エラーを簡潔にするため省略チェック):
const TCHAR class_name[] = _T("Power State Monitor");
WNDCLASSEX wc = { 0 };
wc.cbSize = sizeof(WNDCLASSEX);
wc.lpfnWndProc = PowerStateMonitor;
wc.lpszClassName = class_name;
::RegisterClassEx(&wc);
::CreateWindowEx(0, class_name, class_name, 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, wc.hInstance, NULL);
::SetSuspendState(FALSE, FALSE, FALSE);
のWindowProcは、次のようになります。
LRESULT CALLBACK PowerStateMonitor(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if(uMsg == WM_POWERBROADCAST)
{
ATLTRACE(L"WM_POWERBROADCAST:\r\n");
return TRUE;
}
ATLTRACE(L"Default Handler: %#08x\r\n", uMsg);
return ::DefWindowProc(hwnd, uMsg, wParam, lParam);
}
私はWM_POWERBROADCAST:
がログに記録見ることを期待するが、代わりに私が見るすべては典型的なものですウィンドウ作成メッセージ:
Default Handler: WM_GETMINMAXINFO
Default Handler: WM_NCCREATE
Default Handler: WM_NCCALCSIZE
Default Handler: WM_CREATE
誰でも私ができることを提案できます私のウィンドウに電源変更通知が正しく届くように変更しますか?