Einzelnen Beitrag anzeigen

Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#17

Re: WM_WINDOWPOSCHANGING abfangen

  Alt 31. Aug 2005, 21:27
Als ob ich's gewusst hätte

Die DLL compiliert aber richtig, oder?

Dann weiter so in deinem Hauptprogramm:

Delphi-Quellcode:
// das hatten wir schon
type
  TMessageHookCallback = procedure(const Msg: Windows.TMsg) of object;

procedure DisableMessageHook; stdcall; external 'SuperMsgHook.dll';
procedure EnableMessageHook(ACallbackProc: TMessageHookCallback); stdcall; external 'SuperMsgHook.dll';

// Ab jetzt neu, Methode von Form1, also von deinem Hauptformular.
// Kann aber auch eine Methode einer beliebigen Klasse sein
procedure Form1.OnMessageHook(const Msg: Windows.TMsg);
begin
  // Hier stehen jetzt in Msg alle Parameter der Meldung
  // Msg.hwnd: HWND; das Fensterhandle
  // Msg.message: UINT; WM_WINDOWPOSCHANGING
  // Msg.wParam: WPARAM; wParam zu der Meldung
  // Msg.lParam: LPARAM; lParam zu der Meldung
  // Msg.time: DWORD; Zeitpunkt der Nachricht
  // Msg.pt: TPoint; Mauszeigerstelle zum ang. Zeitpunkt

end;

procedure Form1.FormShow(Sender: TObject);
begin
  // Hier wird der Hook eingeschaltet
  EnableMessageHook(OnMessageHook);
end;

procedure Form1.FormHide(Sender: TObject);
begin
  // ... und hier wieder ausgeschaltet
  DisableMessageHook;
end;
In OnMessageHook kannst du jetzt die Nachrichten verarbeiten. Du solltest allerdings nicht zu viel machen, da es sonst auf die Performance geht.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat