![]() |
Mousehook in Klasse/Komponente ?!
Hi,
ich schreibe gerade eine Klasse in der unter anderem die Maus gehooked werden soll. Zum hooken selber gibt es ja hier genug Beschreibungen/Anleitung; allerdings weiß ich nicht wie ich den hook innerhalb einer Klasse starten soll, den wenn ich die Callback function für den Hook innerhalb der Klasse habe wird diese nicht aktzeptiert. Habe ich die Function außerhalb der Klasse fehlen mir zur weiteren Verarbeitung Werte aus der Klasse :-( Wie kann mann das umgehen ?
Delphi-Quellcode:
function MouseProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var CtrlID: Word; tmpComponent : TComponent; begin case nCode < HC_ACTION of True: Result := CallNextHookEx(FMouseHook, nCode, wParam, lParam); else CtrlID := GetDlgCtrlId(PMOUSEHOOKSTRUCT(lParam)^.HWND); // mouse over an other control ?? if FlastID <> CtrlID then begin FLastID := CtrlID; end; // did we have an double click event ? if wParam = WM_LBUTTONDBLCLK then begin MessageBeep(0); // ^ Zum Test ^ end; Result := CallNextHookEx(FMouseHook, nCode, wParam, lParam); end;
Delphi-Quellcode:
1. Frage: Wie kann ich den Hook innerhalb der Klasse sauber realisieren ?
FMouseHook := SetWindowsHookEx(WH_MOUSE, @MouseProc, 0, GetCurrentThreadId());
// ^^ schlägt fehl wenn MouseProc member der Klasse ist ...... 2. Frage: Wie bekomme ich die Komponente auf der WM_LBButtonDBLCLK ausgeführt wird ? Danke, Greetz Data |
Re: Mousehook in Klasse/Komponente ?!
1. Suche nach MakeProcInstance! Luckie hat dazu etwas hier und wahrscheinlich auch bei sich auf der Hausseite geschrieben.
2. WindowFromPoint |
Re: Mousehook in Klasse/Komponente ?!
Hi,
vielen Dank das hat mich auf die richtige Spur gebracht. Gelöst habe ich es jetzt mit folgenden Tipp: ![]() Meine 2. Frage hat ich mittlerweile schon selber gelöst, aber nicht mit WindowFromPoint, sondern mit : FindDragTarget(Mouse.CursorPos,true); Meine Ziel ist mit dem Hook, dem Benutzer der Anwendung in einem bestimmten Modus die Möglichkeit zu geben die Komponenten selber zu wählen, um dann mit dieser Auswahl bestimmte Einstellungen zu treffen. Oder könnte man das ganze noch anders angehen ? Wie macht es die Ide ? DAnke & Greetz Data |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 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