ich schreibe gerade ein Skript, das den Mauszeiger von einem Anfangspunkt schrittweise zum Endpunkt führt.
(1 Schritt = je 1 Pixel in x-Richtung)
Gleichzeitig soll die linke Maustaste gedrückt werden.
Als Demonstration hab ich mal Paint genommen, die Füllwerkzeuge könnt ihr also ignorieren.
Ziel ist es, dass die grüne Fläche ausgefüllt wird, die rote aber unangetastet bleibt.
Im "echten Computerleben" soll mir das Skript in Programmen helfen, in denen bestimmte Bereiche geklickt werden müssen,
andere aber unangetastet bleiben müssen.
Mit meinem aktuellen Skript schaffe ich es, dass es zumindest teilsweise ausgefüllt wird:
Code: Select all
F1::
xStart := 278, yStart := 256, xEnde := 675, yEnde := 493 ; Anfangs- und Endpunkte (wird später mithilfe einer GUI festgelegt)
differenzX := xEnde - xStart ; Pixel, die horizontal gezeichnet werden müssen
differenzY := yEnde - yStart ; Pixel, die vertikal gezeichnet werden müssen
MouseMove, xStart, yStart, 0 ; Mauszeiger auf Startposition befördern
Loop, %differenzX% ; So oft wiederholen, wie der Unterschied der beiden x-Punkte ist
{
Sleep, 2 ; Kurzer Puffer, damit der Loop pausiert werden kann
MouseGetPos, x, y ; Aktuelle Mauszeigerposition ermitteln
if x between 373 and 582 ; Befindet sich der Mauszeiger innerhalb der x-"Sperrzone":
{
Send {lbutton up} ; Linke Maustaste loslassen
}
else ; Für alle anderen Zonen:
{
Send {lbutton down} ; Linke Maustaste gedrückt halten
}
MouseMove, 0, %differenzY%, 0, R ; Mauszeiger relativ nach unten bewegen (zum y-Endpunkt)
MouseMove, 1, -%differenzY%, 0, R ; Mauszeiger relativ um 1 Pixel nach rechts und wieder nach oben bewegen (zum y-Startpunkt)
} ; Nach Abschluss der Schleife:
Send {lbutton up} ; Linke Maustaste loslassen
return
.
Ich bekomme das mit den y-Punkten aber nicht hin.
Variante 1: Nichts wird gezeichnet:
if (x between 373 and 582) and (y between 316 and 428) ; Befindet sich der Mauszeiger innerhalb der x oder y-"Sperrzone":
Variante 2: Wie im bisherigen Skript
if x between 373 and 582 and y between 316 and 428 ; Befindet sich der Mauszeiger innerhalb der x oder y-"Sperrzone":
Variante 3: Nichts wird gezeichnet:
if (x between 373 and 582 and y between 316 and 428) ; Befindet sich der Mauszeiger innerhalb der x oder y-"Sperrzone":
Variante 4: Alles wird gezeichnet (also zu viel)
Code: Select all
if x between 373 and 582 ; Befindet sich der Mauszeiger innerhalb der x-"Sperrzone":
{
if y between 316 and 428 ; Und auch innerhalb der y-"Sperrzone":
{
Send {lbutton up} ; Linke Maustaste loslassen
}
}
Danke für jede Hilfe!
Grüße