此函數RegisterShellHookWindow(m_hWnd);
是註冊全域的HOOK函數
當有視窗開啟換關閉時會等等等......
自己的主程式就會接收到訊息
這時候只需override
DefWindowProc函數 就可以接收到訊息
不過最好之前還要加上一個步驟
msgShellHook = RegisterWindowMessage(L"SHELLHOOK");
先註冊自己的訊息
等等DefWindowProc 裡面需要用到
LRESULT CTestDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: 在此加入特定的程式碼和 (或) 呼叫基底類別
//添加:消息循環SWITCH語句
if(message == msgShellHook){ //是否跟自己註冊的訊息一樣
switch (wParam)
{
case HSHELL_WINDOWCREATED:
//某視窗開啟
break;
case HSHELL_WINDOWDESTROYED:
//某視窗關閉
break;
}
}
return CDialog::DefWindowProc(message, wParam, lParam);
}
00