Q&A

  • 시스템 전역으로 WM_PAINT후킹이 잘 안되서..ㅡ.ㅡ;;
안녕하세요?

시스템 전역으로 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가 걸러지는지 가르쳐 주시면 감사하겠습니다. 부디 이 초보를 도와주세요 요로분~

0  COMMENTS