2017-10-11 6 views
-3

나는 아래의 코드에서 언급 한 바와 같이 후크 프로 시저 GetMsgProc 내부에 메시지를 인쇄하려고를 사용하여 GetMsgPrc를 호출 할 수 없습니다 :WH_GETMESSAGE 후크

LRESULT WINAPI GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam) 
{ 
    printf("inside hook proc"); 

    return CallNextHookEx(getmsghook, nCode, wParam, lParam); 
} 


void main() 
{ 
    HINSTANCE hins; 
    hins = GetModuleHandle(NULL); 
    getmsghook = SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC) GetMsgProc, hins, 0); 

    MSG message; 
    while (GetMessage(&message, NULL, 0, 0)) 
    { 
     TranslateMessage(&message); 
     DispatchMessage(&message); 
    } 

    UnhookWindowsHookEx(getmsghook); 
} 

// ---------- -------------------------------------------------

제 생각 엔 모든 키보드 또는 마우스 입력에 대해 해당 메시지가 인쇄됩니다. 하지만 왜 그런 일이 일어나지 않는지 알 수는 없습니다. 도와 주실 수 있겠습니까?

+0

올바르게 다시 호출하면 해당 훅은 창 핸들에 _sent_ 인 메시지 만 캡처합니다. –

+0

@ 500-InternalServerError : 필수는 아닙니다. WH_GETMESSSAGE를 WH_MOUSE_LL로 바꾸면 작동합니다. – Roger1990

+0

@ 500-InternalServerError 'WH_GETMESSAGE'는 (Peek | Get) Message()를 통해 전달되는 메시지를 게시, 전송, 방송 등 어떤 것이라도 포착합니다. 대신 WH_CALLWNDPROC/RET를 생각해 볼 수 있습니다. 창문에. –

답변

1

전역 후크는 .DLL로 구현되어야하며 유일한 예외는 로우 케블 키보드 및 마우스 후크입니다. SetWindowsHookEx의 반환 값을 확인하십시오. 아마도 NULL입니다.