MouseClickDrag

Klickt und hält eine bestimmte Maustaste gedrückt, bewegt den Mauszeiger auf die Zielkoordinaten und lässt die Taste dann wieder los.

MouseClickDrag, WelcheTaste, X1, Y1, X2, Y2 , Geschw, Relativ

Parameter

WelcheTaste

Die zu klickende Taste: Left (Standard), Right, Middle (oder jeweils nur der erste Buchstabe). Geben Sie X1 für die vierte Maustaste und X2 für die fünfte Maustaste an. Zum Beispiel: MouseClickDrag, X1, ....

Falls der Benutzer die primäre und sekundäre Maustaste via Systemsteuerung vertauscht hat, ist es ratsam, stattdessen den Click-Befehl zu nutzen, da er diesen Sachverhalt ausgleichen kann.

X1, Y1

Die X/Y-Koordinaten der Position, von wo aus der Ziehvorgang begonnen werden soll (der Mauszeiger wird auf diese Position verschoben, bevor der Ziehvorgang begonnen wird). Diese Parameter können Ausdrücke sein. Koordinaten sind relativ zum aktiven Fenster, sofern das nicht mit CoordMode geändert wurde. Lässt man diese weg, wird stattdessen die aktuelle Position des Mauszeigers verwendet.

X2, Y2

Die X/Y-Koordinaten der Position, auf die der Mauszeiger gezogen werden soll (während die Maustaste gedrückt gehalten wird). Diese Parameter können Ausdrücke sein. Koordinaten sind relativ zum aktiven Fenster, sofern das nicht mit CoordMode geändert wurde.

Geschw

Wie schnell der Mauszeiger bewegt werden soll, von 0 (schnell) bis 100 (langsam). Dieser Parameter kann ein Ausdruck sein.

Hinweis: Eine Geschwindigkeit von 0 bewegt den Mauszeiger sofort auf die neue Position.

Lässt man diesen Parameter weg, wird die Standardgeschwindigkeit verwendet (die via SetDefaultMouseSpeed definiert ist oder standardmäßig 2).

Geschw wird bei den Methoden SendInput und SendPlay ignoriert; sie positionieren den Mauszeiger sofort auf die neuen Koordinaten (allerdings hat SetMouseDelay einen Modus, der für SendPlay verwendet werden kann). Um den Mauszeiger visuell langsamer zu bewegen (z. B. um einem Publikum etwas vorzuführen), verwenden Sie SendEvent {Click 100, 200} oder SendMode Event (optional in Verbindung mit BlockInput).

Relativ

Lässt man diesen Parameter weg, werden die X- und Y-Koordinaten als absolute Werte behandelt. Um dieses Verhalten zu ändern, geben Sie den folgenden Buchstaben an:

R: Die X1- und Y1-Koordinaten werden als Offsets von der aktuellen Mausposition behandelt. Das heißt, dass der Zeiger von seiner aktuellen Position um X1 Pixel nach rechts (nach links, wenn negativ) und um Y1 Pixel nach unten (nach oben, wenn negativ) verschoben wird. Ebenso werden die Koordinaten X2 und Y2 als Offsets von den Koordinaten X1 und Y1 behandelt. Das folgende Beispiel zeigt, wie der Mauszeiger von seiner Startposition 5 Pixel nach unten und nach rechts, und dann im gedrückten Zustand 10 Pixel nach unten und nach rechts verschoben werden kann: MouseClickDrag, Left, 5, 5, 10, 10, , R.

Bemerkungen

Dieser Befehl verwendet die gesetzte Sendemethode von SendMode.

Das Ziehen des Mauszeigers kann auch mit verschiedenen Send-Befehlen durchgeführt werden - dies ist flexibler, weil der Modus über den Befehlsnamen angegeben werden kann. Zum Beispiel:

SendEvent {Click 6, 52, down}{click 45, 52, up}

Ein weiterer Vorteil von dieser Methode ist, dass sie im Gegensatz zu MouseClickDrag die linke und rechte Maustaste ausgleicht, falls der Benutzer sie via Systemsteuerung vertauscht hat.

Der SendPlay-Modus ist im Gegensatz zu den anderen Methoden erfolgreicher darin, Mausereignisse in Videospielen zu erzeugen. Allerdings kann es sein, dass das Ziehen des Mauszeigers via SendPlay bei RichEdit-Steuerelementen wie WordPad und Metapad (und möglicherweise andere) nicht funktioniert.

Beachten Sie außerdem, dass einige Anwendungen und Videospiele eventuell Schwierigkeiten haben, den Mauszeiger zu folgen, wenn er sich zu schnell bewegt. Mit dem Geschw-Parameter oder SetDefaultMouseSpeed kann die Geschwindigkeit reduziert werden (nur im voreingestellten SendEvent-Modus).

Der BlockInput-Befehl kann genutzt werden, um zu verhindern, dass physische Mausaktivitäten des Benutzers die künstlich erzeugten Mausereignisse stören. Allerdings ist das bei den Methoden SendInput und SendPlay nicht notwendig, weil sie die physischen Mausaktivitäten des Benutzers automatisch nach hinten verschieben.

Nach jedem DOWN- und UP-Ereignis der Maus erfolgt automatisch eine Verzögerung (außer beim SendInput-Modus). Diese Verzögerung erfolgt auch nach dem Verschieben des Mauszeigers während des Ziehvorgangs. Mit SetMouseDelay kann die Verzögerungsdauer geändert werden.

Siehe auch

CoordMode, SendMode, SetDefaultMouseSpeed, SetMouseDelay, Click, MouseClick, MouseGetPos, MouseMove, BlockInput

Beispiele

#1

MouseClickDrag, left, 0, 200, 600, 400

#2: Das folgende Beispiel öffnet MS Paint und zeichnet ein kleines Haus:

Run, mspaint.exe
WinWaitActive, ahk_class MSPaintApp,, 2
if ErrorLevel
    return
MouseClickDrag, L, 150, 250, 150, 150
MouseClickDrag, L, 150, 150, 200, 100
MouseClickDrag, L, 200, 100, 250, 150
MouseClickDrag, L, 250, 150, 150, 150
MouseClickDrag, L, 150, 150, 250, 250
MouseClickDrag, L, 250, 250, 250, 150
MouseClickDrag, L, 250, 150, 150, 250
MouseClickDrag, L, 150, 250, 250, 250