![]() |
WM_WINDOWPOSCHANGING abfangen
Hi, der Titel sagt eigentlich schon alles. Wie kann ich WM_WINDOWPOSCHANGING des aktuellen Fensters abfangen?
Vielen Dank schonma :) |
Re: WM_WINDOWPOSCHANGING abfangen
in dem du einen messagehandler dafür schreibst
Delphi-Quellcode:
private
procedure FWindowPosChanging(var AMsg: TMessage); message WM_WINDOWPOSCHANGING; [...] procedure TForm1.FWindowPosChanging(var AMsg: TMessage); begin //Hier dein Source der was machen soll wenn die Message einfliegt end; |
Re: WM_WINDOWPOSCHANGING abfangen
Hmh das habe ich schon rausbekommen, aber mein Problem ist, dass ich WM_WINDOWPOSCHANGING von ALLEN Fenstern abfangen will, nicht nur die von meinem Programm.
|
Re: WM_WINDOWPOSCHANGING abfangen
dann musst du dir einen messagehook schreiben
|
Re: WM_WINDOWPOSCHANGING abfangen
brauch ich dafür ne extra dll? Haste vielleicht einen Link mit einer Anleitung dazu?
Is nämlich mein erstes mal :mrgreen: |
Re: WM_WINDOWPOSCHANGING abfangen
such mal im msdn nach SetWindowsHookEx (bzw. in der Delphihilfe)
![]() Um eine DLL kommst du da wohl nicht herum (steht aber noch genaueres im msdn). |
Re: WM_WINDOWPOSCHANGING abfangen
Ich verstehe das ganze leider nicht so recht... Auch Assabads Hook Tutorial bringt mich nicht recht weiter. Gibt es denn nicht irgendwo eine Anleitung wie man Messages abfängt und verändert etc.?
|
Re: WM_WINDOWPOSCHANGING abfangen
Ungefähr so:
Delphi-Quellcode:
[Nachtrag]
var
HookHandle: Cardinal; function GetMsgProc(code: integer; wParam: WPARAM; lParam: LPARAM): LResult; stdcall; begin if code = HC_ACTION then with Windows.PMsg(lParam)^ do if message = WM_WINDOWPOSCHANGING then begin end; Result := CallNextHookEx(HookHandle, Code, wParam, lParam); end; ... begin HookHandle := SetWindowsHookEx(WH_GETMESSAGE, GetmsgProc, hInstance, 0); end; DLL kannst du dir sparen wenn's nur um dieselbe Anwendung geht. [Noch'n Nachtrag] Mit der Funktion
Delphi-Quellcode:
aus der Unit Controls kriegst du dann zu dem Fensterhandle das Control/die Form (falls vorhanden).
function FindControl(Handle: HWnd): TWinControl;
|
Re: WM_WINDOWPOSCHANGING abfangen
Ne es geht ja NICHT um die gleiche Anwendung :) Ich will auch die Messages anderer Fenster abfangen ;)
|
Re: WM_WINDOWPOSCHANGING abfangen
Dann musst du den Code in eine DLL packen.
Alternativ zu WH_GETMESSAGE kannst du dir auch mal den Hook WH_CBT ansehen, da gibt's dann vielleicht nicht so viel Message-Traffic. DLL erstellen geht eigentlich ganz einfach - mach einfach ein neues Projekt mit dem "DLL-Experten". Den Code trägst du dann komplett direkt in die Projektdatei ein, ähnlich wie bei einer Konsolenanwendung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz