Pause/Fortsetzen per Hotkey

  • Ich würde gerne einen script per Tastendruck pausieren und ebenfalls per Tastendruck fortsetzen lassen.

    Mein erste Idee war nun, eine schleife mit austrittsbedingung zu verwenden (Wenn x gedrückt wird fortsetzen)

    das Problem ist nun, das ich in der Hilfe gelesen ahbe, dass es den "goto" befehl, wie er zB in bats verwendet wird, bei AutoIT nicht gibt (bzw in v3 nicht gibt)

    Wies also lässt sich das ohne goto lösen?

    PS: Falls ich es nicht gut genug beschrieben habe, hier in Codenaher schreibweise was ich vorhatte:

    SetHotkey (x,goto Pausenphase)

    :Pausenphase
    Do
    WinWait("","",1)
    Until _isPressed x
    goto Hauptprogramm

  • statt nem abschnitt ne Funktion verwenden - tja, an die einfachsten Dinge denkt man nicht :)

    aber was bezweckst du mit


    While 1
    Sleep(100)
    ;programmcode
    WEnd

  • achso hatte mich leicht verwundert, dachte das wäre so gedacht, die while-schleife und das sleep um mein programm herum (";programmcode") zu setzen - werde es mal testen

  • jetzt wirds merkwürdig - ich kann f9 drücken bis ich schwarz werde und es passiert nichts... soweit, so gut, wenn das immer so wäre! mal klappt es garnicht, mal kann ich einmal anhalten und fortsetzen und danach geht es nciht mehr und gerade konnte ich es 2mal machen und danach ncihtmehr?!

    PS: die taste ist heile :)

    wenn ich die taste gedrückt halte hält das programm an bis ich loslasse - oder nach einigen sekunden eine meldung kommt, dass ein stacküberlauf durch beenden verhindert wurde

    das Problem liegt nicht am betreten der funktion Pause, sondern daran, dass die schleife nur 1mal durchlaufenwird, _isPressed also ohne Tastendruck scheinbar "true" zurückgibt

    3 Mal editiert, zuletzt von CallMeN00b68 (29. April 2007 um 16:01)

    • Offizieller Beitrag

    hier, das funzt bei mir prima:

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>
    HotKeySet("{F9}", "_pause")
    HotKeySet("^e", "_end")
    $N = 0
    While 1
    $N += 1
    ToolTip($N)
    Sleep(500)
    WEnd

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

    Func _pause()
    Do
    Sleep(100)
    Until _IsPressed("79") ; F10
    EndFunc

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

    Func _end()
    Exit
    EndFunc

    [/autoit]

    Du kannst ja mal den Wert für Slep in der Pause-Funktion auf 10 runtersetzen.

  • wie gesagt es wird pausiert, aber sofort wieder weitergemacht, sobald es einmal durchlaufen ist. setzte ich sleep auf 5000, hält es 5sek an und geht dann weiter

    HotKeySet("{F9}", "_pause")


    Func _pause()
    Do
    Sleep(100)
    Until _IsPressed("79") ; F10
    EndFunc

    funktioniert einfach nicht wie es sollte