Q&A

  • WH_SHELL 후킹이 모든 윈도우를 못잡아내요....

///// DLL에 훅 설치 함수

 

#define WM_ACTIVWND WM_USER+1

.

.

.

extern "C" __declspec(dllexport)
HHOOK InstallSHHook ()
{
 g_hSHHook=SetWindowsHookEx(WH_SHELL,SHHookProc,g_hInst, 0);
 return g_hSHHook;
}

.

.

.

extern "C" __declspec(dllexport)
LRESULT CALLBACK CBTHookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
 switch(nCode)
 {
 case HSHELL_WINDOWACTIVATED :
  SendMessage(g_hwndBlackBox, WM_ACTIVWND, wParam, lParam ) ;  // 중단점
  break;
 }
 return (CallNextHookEx(g_hSHHook, nCode, wParam, lParam));

}

 

 

일단 이렇게 간략히 추려 봤습니다.

제대로 했다고 생각하는데

중단점을 설정해놓고 디버깅을 해봐도

g_hwndBlackBox // 제 메인 윈도우 핸들

를 제외한 모든 메시지가 후킹이 안되네요..

(이 훅을 설치한 윈도의(g_hwndBlackBox ) 에서의 메시지는 후킹됨... )

왜이럴까요 ㅜㅜ

 

이거때문에 지금 3일 째입니다

해결좀 해주세요 ~~

2  COMMENTS
  • Profile
    zeliard 2012.01.06 04:52

    WH_SHELL 훅은 탑레벨 윈도우만 감지합니다. CBT훅을 쓰세요.

  • Profile
    흑야성 2012.01.06 04:56

    저도 원래 CBT훅 쓰려 했는데 .. CBT역시 똑같 더군요...

    제말은 탑레벨 윈도우 전부의 메시지를 후킹을 못하더라구요 ㅜ

    훅을 설치한 윈도우는 메시지가 들어오는데..

     

    ( 여기서 또.. 윈도우 활성화 메시지만 안들어오는 것이 아니라,

    모든 메시지가 안들어와요.. 이상하게 훅을 설치한(제 메인 윈도우 )윈도우의

    메시지만 들어오고요 ㅜㅜ