Q&A

  • 특정 프로그램의 마우스 영역을 전역으로 후킹하는데용..
특정 프로그램의 마우스 영역을 전역으로 후킹하는데용..

툴바의 특정 사각영역을 잡는건데요..

근데 툴바의 X와 Y의 좌표값이 자꾸 변하네요.. 툴바의 위치가 아닌지요..???

제발 도와주세용..

// 훅 프로시져
function HookProc(Code : integer; wParam: WPARAM; lParam: LPARAM): LongInt;
  function FindWindowEx2(hwnd: HWND; ClsName: PChar): Hwnd;
  begin
      Result := FindWindowEx(hwnd, 0, ClsName, nil);
  end;
var
  hMDIMain, hToolBar, hWindow, hDc : THandle;
begin
    hMapOpenObject := OpenFileMapping(FILE_MAP_ALL_ACCESS, false, 'NAMEISHAJIN');
    pMapView2 := MapViewOfFile(hMapOpenObject, FILE_MAP_ALL_ACCESS, 0, 0, 1024);

    if Code >= 0 then begin
        if wParam = WM_RBUTTONDOWN then begin
            hMDIMain := FindWindow('TMainFrm',0);
            hToolBar := FindWindowEx2(
                        FindWindowEx2(
                        FindWindowEx2(
                        FindWindowEx2(hMDIMain,'MDIClient'), 'TForwardFrm5'), 'TCoolBar'), 'TToolBar');

            hWindow := FindWindow('TForm1',0);
            hDc := GetDC(hWindow);

            if hToolBar <> 0 then begin
                if hToolBar = MOUSEHOOKSTRUCT(Pointer(lParam)^).hwnd then begin    // hToolBar 클래스만 마우스 움직임 표시
                    TextOut(hDc, 100, 100, 'Find ToolBar', 13);
                    if (MOUSEHOOKSTRUCT(Pointer(lParam)^).pt.X > 300) and (MOUSEHOOKSTRUCT(Pointer(lParam)^).pt.X < 350  ) then  --> 여기 좌표값이  hToolBar 의 좌표값이 아닌지요.. ?
                    begin
                        TextOut(hDc, 100, 100, 'ToolBarButtion', 14);
                        SendMessage(hWindow, WM_COOLBARBUTTONCLICK, 0, 0);

                    end;
                end;
            end
            else begin
                TextOut(hDc, 100, 100, 'Not Find ToolBar', 17);
            end;

            ReleaseDC(hWindow, hDc);
        end;
    end;

    Result := CallNextHookEx(pMapView2^, Code, wParam, lParam);
end;

0  COMMENTS