Einzelnen Beitrag anzeigen

Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#1

Maushook: Mausklick "nachliefern"

  Alt 6. Feb 2004, 17:44
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);
{...}
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat