Einzelnen Beitrag anzeigen

Metal_Snake2

Registriert seit: 19. Nov 2004
134 Beiträge
 
Delphi 7 Personal
 
#6

Re: "Crossprocess Subclassing" Warum funzt das nic

  Alt 3. Sep 2008, 18:58
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.
  Mit Zitat antworten Zitat