Hallo,
also das mit den Hooks hab ich doch halbwegs verstanden. Und ich denke auf dem Weg bin ich jetzt schon mal richitg.
Ich habe jetzt versucht, als erstes Mal den Mausdruck zu empfangen. Dazu folgender Code:
Ist in der Hook
Dll abgelegt:
Delphi-Quellcode:
function MouseHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM):
LRESULT; stdcall;
begin
//es ist ebenfalls möglich die Bearbeitung an eine Bedingung zu knüpfen
//it's possible to call CallNextHookEx conditional only.
Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
case nCode < 0 of
TRUE: exit; //wenn code kleiner 0 wird nix gemacht
//if code smaller 0 nothing has to be done
FALSE:
begin
//Hier kann jetzt alles bearbeitet werden
//Here one can work with the parameters
PostMessage(WindowHandle, WM_MOUSEHOOKMSG, wParam, lParam);
end;
end;
end;
In meinem Programm starte ich jetzt den Hook. Und fange die Mausereignisse so ab:
Delphi-Quellcode:
procedure TForm1.DllMessage(var Msg: TMessage);
begin
// if (Msg.wParam <> WM_LBUTTONDOWN) or (Msg.wParam <> WM_LBUTTONUP) then exit;
if Msg.wParam = WM_LBUTTONDOWN then
Label1.Caption := ('Down')
else if Msg.wParam = WM_LBUTTONUP then
Label1.Caption := ('Up');
end;
Leider bekomme ich nur die Mausereignisse in meinem eigenen Programm und nicht Systemweit, ich hab doch eine
DLL erstellt, ich habe das Gefühl das reicht nicht um es Systemweit zu machen!?
Yves