Script mit einem Tastendruck beenden

  • Hallo Liebe AutoIt Gemeinde,
    ich habe ein kleines Script geschrieben, was den Mauszeiger 10 mal im Kreis bewegt. Jetzt möchte ich zb. Mit der F8 Taste das Script sofort beenden
    .
    Habe gelesen das ich „if _ispressed("77") Then ExitLoop ; „ einfügen soll, leider weis ich nicht wo es hin soll. Außerdem glaube ich, dass ich was zwischen Then und ExitLoop, etwas einfügen muss, leider weis ich nicht was.
    Bitte entschuldigt das ich euch mit sowas nerven muss, habe es aber nach mehreren Stunden nicht hinbekommen.

    Mfg Paul

    [autoit]

    For $i = 1 to 10 Step 1
    MouseClick("left", 988, 145);
    Sleep(300)
    MouseClick("left", 1081, 158);
    Sleep(300)
    MouseClick("left", 1181, 178);
    Sleep(300)
    MouseClick("left", 1261, 212);
    Sleep(300)
    MouseClick("left", 1313, 265);
    Sleep(300)
    MouseClick("left", 1348, 336);
    Sleep(300)
    MouseClick("left", 1351, 426);
    Sleep(300)
    MouseClick("left", 1291, 507);
    Sleep(300)
    MouseClick("left", 1185, 586);
    Sleep(300)
    MouseClick("left", 1053, 612);
    Sleep(300)
    MouseClick("left", 934, 602);
    Sleep(300)
    MouseClick("left", 801, 587);
    Sleep(300)
    MouseClick("left", 699, 542);
    Sleep(300)
    MouseClick("left", 611, 439);
    Sleep(300)
    MouseClick("left", 651, 302);
    Sleep(300)
    MouseClick("left", 728, 177);
    Sleep(300)
    MouseClick("left", 852, 148);
    sleep(300)
    next

    [/autoit]
  • Spoiler anzeigen
    [autoit]


    HotKeySet("{F8}", "ende")
    For $i = 1 to 10
    MouseClick("left", 988, 145);
    Sleep(300)
    MouseClick("left", 1081, 158);
    Sleep(300)
    MouseClick("left", 1181, 178);
    Sleep(300)
    MouseClick("left", 1261, 212);
    Sleep(300)
    MouseClick("left", 1313, 265);
    Sleep(300)
    MouseClick("left", 1348, 336);
    Sleep(300)
    MouseClick("left", 1351, 426);
    Sleep(300)
    MouseClick("left", 1291, 507);
    Sleep(300)
    MouseClick("left", 1185, 586);
    Sleep(300)
    MouseClick("left", 1053, 612);
    Sleep(300)
    MouseClick("left", 934, 602);
    Sleep(300)
    MouseClick("left", 801, 587);
    Sleep(300)
    MouseClick("left", 699, 542);
    Sleep(300)
    MouseClick("left", 611, 439);
    Sleep(300)
    MouseClick("left", 651, 302);
    Sleep(300)
    MouseClick("left", 728, 177);
    Sleep(300)
    MouseClick("left", 852, 148);
    sleep(300)
    next

    [/autoit] [autoit][/autoit] [autoit]

    Func ende()
    Exit
    EndFunc

    [/autoit]


    Padmak

  • Danke für die schnelle Antwort, habe es aber gerade doch selbst hinbekommen :)

    Spoiler anzeigen
    [autoit]

    Global $Paused
    HotKeySet("{PAUSE}", "TogglePause")
    HotKeySet("{F8}", "Terminate")
    HotKeySet("+!d", "ShowMessage") ;Shift-Alt-d
    For $i = 1 to 2 Step 1
    MouseClick("left", 988, 145);
    Sleep(300)
    MouseClick("left", 1081, 158);
    Sleep(300)
    MouseClick("left", 1181, 178);
    Sleep(300)
    MouseClick("left", 1261, 212);
    Sleep(300)
    MouseClick("left", 1313, 265);
    Sleep(300)
    MouseClick("left", 1348, 336);
    Sleep(300)
    MouseClick("left", 1351, 426);
    Sleep(300)
    MouseClick("left", 1291, 507);
    Sleep(300)
    MouseClick("left", 1185, 586);
    Sleep(300)
    MouseClick("left", 1053, 612);
    Sleep(300)
    MouseClick("left", 934, 602);
    Sleep(300)
    MouseClick("left", 801, 587);
    Sleep(300)
    MouseClick("left", 699, 542);
    Sleep(300)
    MouseClick("left", 611, 439);
    Sleep(300)
    MouseClick("left", 651, 302);
    Sleep(300)
    MouseClick("left", 728, 177);
    Sleep(300)
    MouseClick("left", 852, 148);
    sleep(300)
    next
    Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
    sleep(100)
    ToolTip('Script ist pausiert',0,0)
    WEnd
    ToolTip("")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Terminate()
    Exit 0
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func ShowMessage()
    MsgBox(4096,"","Das ist eine Nachricht.")
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Manchmal nutzt es doch sich die Hilfe anzuschauen , ist nämlich das modifizierte Beispiel von HotKeySet ;)

  • aber immerhin hat er sich die hilfe angeschaut
    es sind viele rum die davon noch nie was gehört haben...

    Padmak

  • Ja wenn man weis nach was man suchen soll, ist es etwas einfacher. Habe nach allem gesucht,außer nach „HotKeySet“.
    Habe noch eine Frage. Jetzt ist es ja so das die Maus auf die Koordinate geht und dann Klickt.

    Ich möchte aber das die linke Maustaste dauernd gedrückt wird und dabei die Koordinaten abfährt.
    Habe dazu folgendes gefunden „MouseClickDrag("left",0,200,600,700)“ leider kann man dort nur zwei Punkte angeben.

  • Ich danke euch schon mal für eure mühe, habe aber noch ein oder zwei probleme, könnten aber noch mehr sein :)
    Ich möchte gern das die schleife erst startet, wenn ich die F2-Taste drücke und nicht wenn ich das script starte.
    Das zweite problem ist, das in meinem script auf der F2-Taste stoppt und auf der F3-Taste weiter läuft, dabei sollte es umgekehrt sein.

    Mfg Paul

    Spoiler anzeigen
    [autoit]

    global $play=1
    hotkeyset("{F2}","starten")
    hotkeyset("{F3}","stoppen")
    HotKeySet("{F8}","Terminate")

    [/autoit] [autoit][/autoit] [autoit]

    Global $Paused
    HotKeySet("{PAUSE}","TogglePause")

    [/autoit] [autoit][/autoit] [autoit]

    $i = 1
    While $i <= 10
    MouseDown("left")
    MouseMove(988, 145);
    Sleep(100)
    MouseMove(1081, 158);
    Sleep(100)
    MouseMove(1181, 178);
    Sleep(100)
    MouseMove(1261, 212);
    Sleep(100)
    MouseMove(1313, 265);
    Sleep(100)
    MouseMove(1348, 336);
    Sleep(100)
    MouseMove(1351, 426);
    Sleep(100)
    MouseMove(1291, 507);
    Sleep(100)
    MouseMove(1185, 586);
    Sleep(100)
    MouseMove(1053, 612);
    Sleep(100)
    MouseMove(934, 602);
    Sleep(100)
    MouseMove(801, 587);
    Sleep(100)
    MouseMove(699, 542);
    Sleep(100)
    MouseMove(611, 439);
    Sleep(100)
    MouseMove(651, 302);
    Sleep(100)
    MouseMove(728, 177);
    Sleep(100)
    MouseMove(852, 148);
    Sleep(100)
    MouseUp("left")
    $i = $i + 1
    wend

    [/autoit] [autoit][/autoit] [autoit]

    Func starten()
    $play = 1
    While $play
    sleep(100)
    WEnd
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    func stoppen()
    $play=0
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Terminate()
    Exit 0
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
    sleep(100)
    ToolTip('Script ist pausiert',0,0)
    WEnd
    ToolTip("")
    EndFunc

    [/autoit]
  • Hmm okay, das hätte ich mir auch denken können. Aber wie löse ich aber das problem mit der schleife, sie soll ja erst starten wenn ich die F2 drücke und nicht wenn ich das script starte.

    • Offizieller Beitrag

    Was hällst du davon die Schleife in die Func zu packen, die dein Hotkey F2 aufruft. En bischen solltest du schon selbst denken und dran arbeiten .

  • Bitte entschuldigt, aber es ist ja nicht so dass ich bei jeder kleinigkeit gleich poste, auch wenn es so aussieht. Versuche mit davor schon meine eigenen gedanken dazu zu machen, leider klappt das noch nicht so gut.

    Die idee, die Schleife in die Func zu packen, die mein Hotkey F2 aufruft, halte ich für eine sehr gute idee……leider bekomme ich es nicht hin.

    • Offizieller Beitrag

    Naja, hab heute meinen sozialen:

    Spoiler anzeigen
    [autoit]

    global $play=1
    hotkeyset("{F2}","starten")
    hotkeyset("{F3}","stoppen")
    HotKeySet("{F8}","Terminate")

    [/autoit] [autoit][/autoit] [autoit]

    Global $Paused
    HotKeySet("{PAUSE}","TogglePause")
    ; Hier beginnt die Hauptschleife
    While 1
    Sleep(50)
    WEnd
    ;Hauptprogramm Ende , jetzt kommen die Funktionen

    [/autoit] [autoit][/autoit] [autoit]

    Func stoppen()
    $play = 1
    While $play
    sleep(100)
    WEnd
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Terminate()
    Exit 0
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
    sleep(100)
    ToolTip('Script ist pausiert',0,0)
    WEnd
    ToolTip("")
    EndFunc
    Func starten()
    $i = 1
    While $i <= 10
    MouseDown("left")
    MouseMove(988, 145);
    Sleep(100)
    MouseMove(1081, 158);
    Sleep(100)
    MouseMove(1181, 178);
    Sleep(100)
    MouseMove(1261, 212);
    Sleep(100)
    MouseMove(1313, 265);
    Sleep(100)
    MouseMove(1348, 336);
    Sleep(100)
    MouseMove(1351, 426);
    Sleep(100)
    MouseMove(1291, 507);
    Sleep(100)
    MouseMove(1185, 586);
    Sleep(100)
    MouseMove(1053, 612);
    Sleep(100)
    MouseMove(934, 602);
    Sleep(100)
    MouseMove(801, 587);
    Sleep(100)
    MouseMove(699, 542);
    Sleep(100)
    MouseMove(611, 439);
    Sleep(100)
    MouseMove(651, 302);
    Sleep(100)
    MouseMove(728, 177);
    Sleep(100)
    MouseMove(852, 148);
    Sleep(100)
    MouseUp("left")
    $i = $i + 1
    wend
    EndFunc

    [/autoit]
  • Vielen dank und durch deine kommentare habe ich auch wieder was gelernt.
    Das While 1 Sleep(50) WEnd ist die Hauptschleife für das Hauptprogramm, die läuft die ganze zeit und prüft ob eine der tasten gedrückt wurde.

    Sollte eine der tasten gedrückt worden sein, springt es runter zu den funktionen und führt diese aus, oder?

    Ist ja im prinzip genau so, als ob ich einen AVR programmieren würde.

    • Offizieller Beitrag

    Du hast es erfaßt. :D