Hallo.
Ich weiß nicht, wie ich hier die Maus-Aktion rückgängig machen soll.
Delphi-Quellcode:
function MouseHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
//es ist ebenfalls moeglich die Bearbeitung an eine Bedingung zu knuepfen
//it's possible to call CallNextHookEx conditional only.
Result := CallNextHookEx(Mouse_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
setprop(WindowHandle, 'mous_ncode', nCode);
setprop(WindowHandle, 'mous_hwnd', PMOUSEHOOKSTRUCT(lParam)^.hwnd);
setprop(WindowHandle, 'mous_hitt', PMOUSEHOOKSTRUCT(lParam)^.wHitTestCode);
setprop(WindowHandle, 'mous_xpos', PMOUSEHOOKSTRUCT(lParam)^.pt.x);
setprop(WindowHandle, 'mous_ypos', PMOUSEHOOKSTRUCT(lParam)^.pt.y);
SendMessage(HWND_BROADCAST, WM_MOUSEHOOKMSG, wParam, lParam);
end;
end;
end;
Dieses Konstrukt der
DLL sieht nicht aus wie eine WndProc-Schleife, bei der man eine nicht gebrauchte Message einfach nicht per inherited weiterreicht...
Ich glaube, dass ich nach SendMessage() das result neutralisieren muss, wenn ich das Ereignis verwerfen möchte.
Das Problem: Die Message WM_MOUSEHOOKMSG müsste dann ja auch noch ein Ergebnis zurückliefern, in dem steht, ob das WM_MOUSE* Ereignis gelöscht wird oder nicht.
Gibt es denn keine bessere Lösung, bei der ich das Maus-Links-Klick-Ereignis löschen kann, ohne die
DLL unnötig zu erweitern?
Gruß
blackdrake