Autor Beitrag
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Do 05.02.09 09:53 
Hallo zusammen,
da sich hier doch recht viele Experten für die verschiedensten Gebiete tummeln, dachte ich mir, ich stelle mal hier die Frage.

Das Problem ist das folgende:
An einem Laptop mit WinXP Professional wird zeitweise das Touchpad, zeitweise eine externe Maus genutzt.
Bei Verwendung des Touchpads sollte, damit sinnvoll gearbeitet werden kann, die Zeigerbeschleunigung (Systemsteuerung->Maus->Zeigeroptionen->Zeigerbeschleunigung) aktiviert sein.
Wird die externe Maus angeschlossen, so muss die Zeigerbeschleunigung deaktiviert werden.

Bisher macht der User das alles per Hand, d.h. er klickt sich durch die Menüs der Systemsteuerung, entfernt od. setzt den entsprechenden Haken, speichert und schliesst dann alle Fenster.
Die Überlegung war nun: Kann man das nicht automatisieren od. zumindest per Script vereinfachen?

Ich habe herausgefunden, dass die benötigten Werte in der Registry unter

HKEY_CURRENT_USER\Control Panel\Mouse

stehen. So weit, so gut. Zwei .reg-Dateien erstellt, einmal Config für Touchpad, einmal für externe Maus.

Jetzt der Knackpunkt:

Wenn ich diese Werte in die Registry eintrage, so werden die Änderungen nicht sofort übernommen. Erst ein Neustart des Systems bewirkt die Änderung.

Ich habe dann versucht, per Stapelverarbeitung erst die Einträge vorzunehmen, dann den explorer abzuschiessen und dann eben diesen neu zu starten. Leider werden dadurch die benötigten Eintrage auch nicht neu geladen.


Hat von euch jemand eine Ahnung, was hier zum Ziel führen könnte?

MfG

_________________
Delphi: XE - OS: Windows 7 Professional x64
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 05.02.09 10:09 
Du könntest versuchen WM_SETTINGCHANGE per Broadcast zu senden:
msdn.microsoft.com/e...ibrary/ms725497.aspx

Die Frage ist aber vor allem ob das nur durch Windows gesteuert wird. Zumindest beim Touchpad ist ja normalerweise externe Software dabei.
Horschdware Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Do 05.02.09 15:33 
Hallo und danke für den tollen Tip.
Der hat zwar nicht funktioniert 8) , hat mich aber auf die richtige Idee gebracht.
Meine Lösung schaut folgendermaßen aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure SetMouse(beschleunigt : boolean)  ;
var a : array[0..2] of integer;
begin
  if beschleunigt then
  begin
    a[0] := 1; a[1]:=6; a[2] := 10;
  end else begin
    a[0] := 0; a[1]:=0; a[2] := 0;
  end;

  SystemParametersInfo(SPI_SETMOUSE, 1, @a, SPIF_SENDCHANGE);
end;


Funktioniert wunderbar!

_________________
Delphi: XE - OS: Windows 7 Professional x64