AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maus-Bewegung beschleunigen

Ein Thema von Ralf Stehle · begonnen am 11. Feb 2024 · letzter Beitrag vom 14. Feb 2024
 
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#1

Maus-Bewegung beschleunigen

  Alt 11. Feb 2024, 15:32
Hallo,

ich habe einen neuen Ultrawide-Monitor und Probleme mit der Maus. Der PC ist leider schon etwas älter.
Windows 10. Delphi 7.

Leider lässt sich meine Maus mit Windows-Bordmitteln nicht weiter beschleunigen.

Jetzt versuche ich mit einem Mouse-Hook die Maus bei Drücken der ALT-Taste zu beschleunigen.

Im Beispiel nur einfach mal nach Rechts:
Bei Auswertung von WM_LBUTTONDOWN funktioniert das auch.
Die Maus hüpft jetzt bei jedem Click 200 Pixel weiter nach rechts:


Delphi-Quellcode:
    WM_LBUTTONDOWN :
      begin
        if GetKeyState(VK_MENU) < 0 then SetCursorPos(200 + pt.x , pt.y);
      end;
    end;

Das ist sicher aber keine sehr ansprechende Lösung.

Gewünscht ist eine kontinuierliche schnellere Bewegung.
Bei Drücken der ALT-Taste sollte sich die Maus einfach doppelt oder dreimal so schnell in die gewünschte Richtung bewegen.
Also eine Maus-Zeiger-Beschleungigung bei Druck der ALT-Taste.

Ich habe auch mal versucht, WM_MOUSEMOVE zu benutzen. Zum Test mal nur nach Rechts.
Komischerweise springt die Maus dann schnell mal in die gewünschte Richtung und kommt sofort zurück!

Delphi-Quellcode:
      WM_MOUSEMOVE:
        if GetKeyState(VK_MENU) < 0 then
        begin
          SetCursorPos(1500, pt.y);
          Sleep(50);
          Application.ProcessMessages;
        end;


Hier nochmal etwas ausführlicher Code mit dem gesamten Mouse-Hook:

Delphi-Quellcode:
  private
    { Private-Deklarationen }
    HotKeySet:Boolean;
  protected
    { Protected-Deklarationen }
    procedure WMHotKey(var Message:TMessage); message WM_HOTKEY;
  end;

  MouseLLHookStruct = record
    pt : TPoint;
    mouseData : cardinal;
    flags : cardinal;
    time : cardinal;
    dwExtraInfo : cardinal;
  end;

  function LowLevelMouseHookProc(nCode, wParam, lParam : integer) : integer; stdcall;


var
  Form1: TForm1;
  mHook : cardinal;
  direction: integer;
  z: integer;

implementation


function LowLevelMouseHookProc(nCode, wParam, lParam : integer) : integer; stdcall;
// possible wParam values: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE, WM_MOUSEWHEEL, WM_RBUTTONDOWN, WM_RBUTTONUP
var
  info : ^MouseLLHookStruct absolute lParam;
begin
  result := CallNextHookEx(mHook, nCode, wParam, lParam);

  with info^ do begin
  begin
    Form1.Caption := 'X: '+IntToStr(pt.x) + ' Y: '+IntToStr(pt.y);
  end;
  case wParam of
    WM_LBUTTONDOWN :
      begin
        if GetKeyState(VK_MENU) < 0 then SetCursorPos(200 * direction + pt.x , pt.y);
      end;
    end;

  end;
end;
Hat jemand eine Idee, wie das richtig geht?

Bei embarcadero.com habe ich nettes Tool gefunden, mit dem das gehen sollte.
Leider lässt sich die Maus an meinem PC damit auch nicht beschleunigen,
aber ich kann die Maus damit durch den linken Bildrand schieben und sie kommt rechts heraus.
Das hilft sehr!

https://blogs.embarcadero.com/de/win...ted-in-delphi/
Ralf Stehle
ralfstehle@yahoo.de

Geändert von Ralf Stehle (11. Feb 2024 um 15:50 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz