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
Antwort Antwort
Ralf Stehle

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

Maus-Bewegung beschleunigen

  Alt 11. Feb 2024, 16: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 16:50 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.077 Beiträge
 
Delphi 12 Athens
 
#2

AW: Maus-Bewegung beschleunigen

  Alt 11. Feb 2024, 18:57
Was sind Bordmittel, meinst Du das ControlPanel von Windows?
Hilft das weiter?
https://superuser.com/questions/1698...or-mouse-usage
https://learn.microsoft.com/en-us/wi...arametersinfoa

Es scheint aber auch Grenzen zu haben und maximal zu verdoppeln.
Zitat:
SPI_SETMOUSESPEED
0x0071

Sets the current mouse speed. The pvParam parameter is an integer between 1 (slowest) and 20 (fastest). A value of 10 is the default. This value is typically set using the mouse control panel application.

Geändert von Rollo62 (11. Feb 2024 um 19:03 Uhr)
  Mit Zitat antworten Zitat
Ralf Stehle

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

AW: Maus-Bewegung beschleunigen

  Alt 12. Feb 2024, 14:39
Vielen Dank, hilft mir leider aber nicht weiter.
Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat
itsChris

Registriert seit: 29. Jul 2022
21 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Maus-Bewegung beschleunigen

  Alt 12. Feb 2024, 15:21
Warum hilft das nicht weiter? Das macht doch genau das, was du wolltest: die aktuelle Mausgeschwindigkeit ändern.

Oder habe ich deine Frage falsch verstanden?
  Mit Zitat antworten Zitat
Ralf Stehle

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

AW: Maus-Bewegung beschleunigen

  Alt 14. Feb 2024, 19:43
Vielen Dank für Eure Hilfe

Leider habe ich keine Ahnung wie ich diese WinApi-Funktion in Delphi umsetzen kann.

Wahrscheinlich so ?

 SystemParametersInfo(SPI_SETMOUSESPEED, 0, 20, 0);
Ich habe mittlerweile herausgefunden, wie man in der Registry die Mausgeschwindigkeit bis auf 20 erhöhen kann
HKEY_CURRENT_USER\Control Panel\Mouse\MouseSpeed=20

Damit geht es etwas besser, ich kann mich daran gewöhnen.
Bei dem breiten Monitor an meinem Uralt-PC muss ich aber trotzdem zweimal ansetzen, bis ich mit der Maus von ganz links nach ganz rechts komme.
Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.048 Beiträge
 
Delphi 12 Athens
 
#6

AW: Maus-Bewegung beschleunigen

  Alt 14. Feb 2024, 19:56
Zitat:
HKEY_CURRENT_USER\Control Panel\Mouse\MouseSpeed
Jetzt rate mal was die Trackbar in den Mauseinstellungen macht.

OK, das in der Registry heißt SPI_SETMOUSESPEED aber "Sensitivity" (in den alten und den neuen Settings)

Und "Mausspeed" ist ein Boolean.
0 = aus / 1 = Zeigerbeschleunigung verbessern (im alten Dialog).

[Win] Mauseinstellungen > Zusätzliche Mauseinstellungen > Zeigeroptionen



Hmmmmmmmmmmmmmmmm SystemParametersInfo(SPI_SETMOUSESPEED, 0, Pointer(15), SPIF_UPDATEINIFILE or SPIF_SENDCHANGE or SPIF_SENDWININICHANGE);


Wieso so oft neu anstetzen?
je nach Bewegungsgeschwindigkeit der Maus sind es bei 4K ultrawide (UWGQH) 2 bis 5 Zentimeter, mit einer Standardmaus. (mit Gämingmaus auf HD ein paar Millimeter)




PS: für 10€ eine neue Maus mit höherer DPI besorgen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (14. Feb 2024 um 20:20 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 06:41 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