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:
FMouseHook := SetWindowsHookEx(WH_MOUSE, @MouseProc, 0, GetCurrentThreadId());
// ^^ schlägt fehl wenn MouseProc member der Klasse ist ......
1. Frage: Wie kann ich den Hook innerhalb der Klasse sauber realisieren ?
2. Frage: Wie bekomme ich die Komponente auf der WM_LBButtonDBLCLK ausgeführt wird ?
Danke,
Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.