eigene Pausefunktion

  • Hallo,

    über die Hilfe habe ich nichts hilfreiches finden können...

    Ich habe bei meinem Script versucht, die "Script paused" Option im Tray selbst zu programmieren...das Problem ist jedoch, dass es immer eine Verzögerung bei meiner Funktion gibt und ich nicht weiß, wie ich das verhindern kann.

    Weiß jemand von euch, wie die originale funktion geschrieben und verwendet wird?
    ich wollte nähmlich nach einer Pause (also wenn es weitergeht) noch weitere Befehle ausführen und weiß nicht, wie ich das mit der originalen Funktion machen kann...

    vielen Dank

    lG
    Galba

  • Der AutoIt-Interpreter ist in C++ geschrieben und hält einfach das Interpretieren des Quellcodes an, bis die Pausierung aufgehoben wurde. Das kannst du (soweit ich weiß) nicht selber machen, außer du findest eine Möglichkeit, diesen internen Befehl irgendwie auszulösen.
    Zum Erkennen, OB das Skript gerade pausiert war, kannst du in einer Schleife die Zeitunterschiede messen, und etwas ausführen, wenn der Zeitunterschied eine Schwelle überschreitet.

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Der AutoIt-Interpreter ist in C++ geschrieben

    ich dachte immer beim kompilieren wird das Programm in Maschinencode umgewandelt und es gibt dann keine C++ interpreter usw. mehr...

  • ich dachte immer beim kompilieren wird das Programm in Maschinencode umgewandelt und es gibt dann keine C++ interpreter usw. mehr...

    Soweit ich weiß, wird beim kompilieren der AutoIt-Interpreter mit in die .exe gepackt

    Kann mich aber auch täuschen

    UNPLEASANT SPOILER

    You just lost the game!

  • wieder was gelernt...danke

    hat denn jemand von euch eine andere Idee, wie ich eine Pause ins Programm einbringen kann, die auch laufende funktionen unterbricht? (also jederzeit anhält) ohne große verzögerungen

  • Per Adlibregister kann man das zum Beispiel bewerkstelligen:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $paused = False

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

    $Form1 = GUICreate("Form1", 460, 122, 192, 124)
    $Button1 = GUICtrlCreateButton("Start", 32, 64, 75, 25, $WS_GROUP)
    GUICtrlSetState($Button1,$GUI_ENABLE)
    $Button2 = GUICtrlCreateButton("Pause", 120, 64, 75, 25, $WS_GROUP)
    GUICtrlSetState($Button2,$GUI_DISABLE)
    $Progress1 = GUICtrlCreateProgress(32, 32, 390, 17)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1 ; start
    GUICtrlSetState($Button1,$GUI_DISABLE)
    GUICtrlSetState($Button2,$GUI_ENABLE)
    myfunction()
    GUICtrlSetState($Button2,$GUI_DISABLE)
    GUICtrlSetState($Button1,$GUI_ENABLE)
    EndSwitch
    WEnd

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

    Func myfunction()
    AdlibRegister("pausemyfunction",100)
    for $i = 1 to 100
    GUICtrlSetData($Progress1,$i)
    Sleep(50)
    Next
    AdlibUnRegister("pausemyfunction")
    EndFunc

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

    Func pausemyfunction()
    AdlibUnRegister("pausemyfunction")
    if GUIGetMsg() = $Button2 Then $paused = True
    if $paused = True Then
    GUICtrlSetData($Button2,"Fortsetzen")
    Do
    if GUIGetMsg() = $Button2 Then
    $paused = False
    GUICtrlSetData($Button2,"Pause")
    EndIf
    if GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit
    Until $paused = False
    EndIf
    AdlibRegister("pausemyfunction",100)
    EndFunc

    [/autoit]