Hey,
Ich wollte ein kleines Programm schreiben, dass einfach nur auf einen bestimmten Button klicken soll, wenn dieser sichtbar wird und dann solange wartet, bis er wieder sichtbar geworden ist, um ihn erneut anzuklicken. Die Position bleibt immer gleich, falls das von Interesse ist.
Hier ist der Code:
Code:
#RequireAdmin
#include<ImageSearch.au3>
HotKeySet("{NUMPAD1}", "Starten")
HotKeySet("{NUMPAD2}", "Pause")
HotKeySet("{NUMPAD3}", "Beenden")
$x1=0
$y1=0
$result1 = _ImageSearch("next.png", 1, $x1, $y1, 0)
While 1
Sleep(50)
WEnd
Func Starten()
While 1
Sleep(50)
If $result1 = 1 Then
MouseClick("Left", $x1, $y1)
MouseMove(0, 0)
Sleep(5000)
EndIf
WEnd
EndFunc
Func Pause()
While 1
Sleep(50)
WEnd
EndFunc
Func Beenden()
Exit 0
EndFunc
Der Grund warum ich 5 Sekunden Sleep eingebaut habe, ist der, dass es etwa 1-2 Sekunden dauert bis der Button nach dem Klick verschwindet. Um sicher zu gehen eben 5 Sekunden. Nach dem Klick soll die Maus wegbewegt werden, damit der Button nicht verändert angezeigt wird, da die Maus auf dem Button liegt.
Der erste Klick funktioniert (der Button ist beim Start bereits sichtbar). Allerdings klickt das Programm nach den 5 Sekunden Sleep wieder auf die Koordinaten wo der Button war; der ist allerdings nicht mehr sichtbar. Das heißt, eigentlich müsste $result=0 gelten und der If-Bereich dürfte gar nicht mehr ausgeführt werden, sondern nur noch Sleep(50) von While 1, doch aus irgendeinem Grund klickt das Programm an die Stelle wo der Button war, obwohl dieser nicht sichtbar ist.