특정 프로그램의 마우스 영역을 전역으로 후킹하는데용..
툴바의 특정 사각영역을 잡는건데요..
근데 툴바의 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;