Mein Problem: Ich hab einen LowLevel-Mousehook installiert. Wenn die Maus bei gedrückter rechter Maustaste bewegt wird, soll der Mausklick nicht weitergeleitet werden. Wird allerdings die Maustaste gedrückt, ohne dass die Maus bewegt wird, soll alles ganz normal ablaufen, sprich Windows erfährt, dass die Maustaste gedrückt wurde.
Das Blockieren ist kein Problem (Dies erfolgt durch die Nichtaufrufung von CallNextHookEx.). Vielmehr, dass die Maustaste erst dann "gedrückt" wird, wenn die Maus weniger als, sagen wir mal, 10 Pixel bewegt wird. Das Problem ist jetzt die "Nachlieferung" von der WM_RMOUSEDOWN-Nachricht. Wenn ich versuche mit mouse_event den Mausklick zu simulieren, hat dies keine Wirkung.
Ich hoff mal, dass man ungefähr nachvollziehen kann, was ich meine.
Auszug aus der Hook-
DLL (ist zugegebenermaßen ein wenig zusammengehackt
):
Delphi-Quellcode:
{...}
Inc(CallCounter);
if (wParam = WM_RBUTTONDOWN) or (wParam = WM_RBUTTONUP) then
begin
if wParam = WM_RBUTTONUP then
if CallCounter < 10 then
begin
GetCursorPos(CurPos);
mouse_event(MOUSEEVENTF_RIGHTDOWN, CurPos.X, CurPos.Y, 0, 0);
Result := CallNextHookEx(LowLevelMouseHookHandle, nCode, WParam, LParam);
end;
CallCounter := 0;
end
else
Result := CallNextHookEx(LowLevelMouseHookHandle, nCode, WParam, LParam);
{...}