윈도우 탐색기 안에 파일목록 보여주는 곳에서 엔터키를 눌렀을 때 발생하는 이벤트를 후킹하고싶습니다.
그 파일들 보여주는 뷰에선 엔터키가 눌리면 사진에 보이는 대로 WM_USER + 202 메시지가 포스트 됩니다.
요 메세지를 후킹해서 파일리스트 뷰에 돌려주지 않으려고 하는데 후킹보터 제대로 안되네요. ㅠ
WH_CALLWNDPROC을 후킹하는 후킹 dll 코드는 다음과 같습니다.
LRESULT CALLBACK MsgProcedure(int nCode, WPARAM wParam, LPARAM lParam)
{
if( lParam )
{
CWPSTRUCT *cwp = (CWPSTRUCT *)lParam;
if( cwp->message == WM_USER + 202 )
{
cwp->message = WM_USER + 4444;
}
else
{
}
}
return ::CallNextHookEx( g_hHook , nCode , wParam , lParam );
}
g_hHook은 HHOOK 핸들입니다.
nCode를 직접 비교하기도 했었는데 Stack Overflow에서 비슷한 삽질을 한 사람 얘길 들어보니 필요한 정보는 lParam에 WEP구조체 포인터로 넘어온다더군요.. 그래서 저렇게 했는데.. 아무일도 일어나지 않습니다. ㅠ_ㅠ
질문 1. WM_USER 이상의 메시지를 후킹하려면 WH_CALLWNDPROC을 후킹하는 것이 맞나요?
질문 2. 원하는 메시지를 낚았을 때 코드처럼 하는 거 말고 좀더 우아한 메시지 삭제 방법이 없을까요?
아무말이라도 좋으니 조언좀.. orz