Ich habe jetz eine konkrete fragt:
Ich bin jetzt im adressraum des anderen Prozesses via Windows Hook, aber warum funktioniert nun das subclassing nicht?
Delphi-Quellcode:
var
OldWndProc : Integer;
function HeaderProc(wnd: HWND; Msg: Cardinal; wParam: wParam; lParam: lParam): Longint; stdcall;
var
MessageProcessed: Boolean;
begin
MessageProcessed := False;
IPCSendMessage(pHookRec1.ClientWnd, 'Leave');
case Msg of
WM_NOTIFY: MessageProcessed := true;
WM_MOUSELEAVE: begin
IPCSendMessage(pHookRec1.ClientWnd, 'Leave');
end;
end;
if not MessageProcessed then
Result := CallWindowProc(Pointer(GetWindowLong(wnd, GWL_USERDATA)),wnd,Msg,wParam,lParam)
else
Result := 0;
end;
procedure Subclass(wnd: HWND);
begin
OldWndProc:= GetWIndowLong(wnd, GWL_WNDPROC);
SetWindowLong(wnd, GWL_USERDATA, OldWndProc);
SetWindowLong(wnd, GWL_WNDPROC, Integer(@HeaderProc));
end;
procedure Unsubclass(wnd: HWND);
begin
if (OldWndProc <> 0) then
SetWindowLong(wnd,GWL_WNDPROC, GetWindowLong(wnd, GWL_USERDATA));
end;
Ich mein das Fensterhandle der zu welches ich subclassen will ist in ordnung jedoch liefert mir
jedesmal der aufruf "GetWIndowLong(wnd, GWL_WNDPROC)" gleich 0, warum bekomme ich einfach micht den
handle zu Fensterprozedure.
Das müßte doch eigentlich jetzt funzen da ich ja in dem richtigen Adressraum bin.