안녕하세요?
시스템 전역으로 WM_PAINT를 후킹하기 위해 dll로 다음과 같이 했는데요.
// 후킹 설치
function HookPT : Boolean;
begin
HPTHook := SetWindowsHookEx(WH_CALLWNDPROC, MyHPTHook, HInstance, 0);
Result := Boolean(HPTHook);
end;
// 후킹 프로시저
function MyHPTHook(Code: Integer; wParam: WPARAM; lParam: LPARAM): LongInt; stdcall;
var
cwpStruct: PCWPStruct;
begin
if (Code = HC_ACTION) then
begin
cwpStruct := PCWPStruct(lParam);
case (cwpStruct^.message) of
WM_PAINT: inc(number);
end;
end;
Result := CallNextHookEx(HPTHook, Code, wParam, lParam);
end;
디버깅 결과 dll을 호출한 app에서만 WM_PAINT가 걸립니다. 분명히 전역훅을 설치했는데요..ㅡ.ㅡ;;
왜 전역으로 WM_PAINT가 걸리지 않고 dll을 호출한 app에서만 WM_PAINT가 걸러지는지 가르쳐 주시면 감사하겠습니다. 부디 이 초보를 도와주세요 요로분~