Skript braucht zu lange bis es startet

  • Hallo, ich habe mir folgendes Programm zum Herunterfahren des PC gebastelt ( ich weiß, davon gibt es schon 50000 ;) )

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $Form1 = GUICreate("", 517, 170, -1, -1)
    $Label1 = GUICtrlCreateLabel("Der Rechner wird abgeschaltet!", 170, 16, 154, 17)
    $Progress1 = GUICtrlCreateProgress(32, 48, 457, 33)
    GUICtrlSetData(-1, 25)
    $Button1 = GUICtrlCreateButton("Stop", 224, 104, 89, 41, 0)
    GUISetState(@SW_SHOW)
    $check1=GUICtrlCreateCheckbox(" Nur neu starten!", 370, 115, 120, 20)
    #EndRegion ### END Koda GUI section ###
    $s = 0; progressbar-saveposition
    $wait = 100

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Exit
    Case Else
    Do
    $msg = GUIGetMsg()

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

    For $i = $s To 100
    ;Stop-Taste abfragen
    $msg = GUIGetMsg()
    If $msg = $Button1 Then
    ;MsgBox(4096, "Test", "Stop", 10)
    Exit
    EndIf
    $m = GUIGetMsg()
    If $m = -3 Then ExitLoop

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

    GUICtrlSetData($Progress1, $i)
    Sleep($wait)
    Next
    If $i > 2 Then
    if GUICtrlRead($check1)=1 then
    ;MsgBox(4096, "Test", "jetzt neu starten", 10)
    Shutdown(2)
    Exit
    Else
    ;MsgBox(4096, "Test", "jetzt abschalten", 10)
    Shutdown(13)
    Exit
    EndIf
    EndIf

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

    Until $msg = $GUI_EVENT_CLOSE

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

    EndSwitch
    WEnd

    [/autoit]


    Dieses Programm starte ich nun über einen Hotkey und der PC geht aus. Nun braucht es manchmal (aber nicht immer) ca. 1 min bis es startet wenn man die Tastenkombination gedrückt hat.
    Die CPU-Last ist während dieser Zeit auch nicht höher wie sonst auch. Wie kann man dem Problem auf den Grund gehen?
    Danke

  • Ich würde es ja so machen...

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $Wait = 5000 ;Wartezeit in Millisekunden
    HotKeySet("^+s", "_Main")

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

    $Form1 = GUICreate("", 517, 170, -1, -1)
    $Label1 = GUICtrlCreateLabel("Der Rechner wird abgeschaltet!", 170, 16, 154, 17)
    $Progress1 = GUICtrlCreateProgress(32, 48, 457, 33)
    GUICtrlSetData(-1, 25)
    $Button1 = GUICtrlCreateButton("Stop", 224, 104, 89, 41, 0)
    $check1 = GUICtrlCreateCheckbox(" Nur neu starten!", 370, 115, 120, 20)

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

    While Sleep(100)
    WEnd

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

    Func _Main()
    GUISetState()
    $TimerShutdown = TimerInit()

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Return GUISetState(@SW_HIDE)
    EndSwitch
    If TimerDiff($TimerShutdown) >= $Wait Then
    Switch BitAND(GUICtrlRead($check1), $GUI_CHECKED) = $GUI_CHECKED
    Case True
    Shutdown(2)
    Case False
    Shutdown(13)
    EndSwitch
    Exit
    EndIf
    GUICtrlSetData($Progress1, TimerDiff($TimerShutdown) / $Wait * 100)
    WEnd
    EndFunc ;==>_Main

    [/autoit]


    Das Programm kann dann die ganze Zeit über laufen, und der HotKey ist im Script integriert, somit dürfte es keine Startprobleme mehr geben ;). Außerdem wird Das Programm so nur zurückgesetzt und nicht beendet wenn man Stop drückt.

  • Das stimmt! Man kann auch gleich die systemeigene "Shutdown.exe" benutzen, aber mich würde eben interessieren wodurch diese Verzögerung kommen kann. Ich habe auch bemerkt, das der Fortschrittsbalken sehr langsam durchläuft, wenn es mit Verspätung startet. Wenn es normal startet geht es ziemlich fix. Aber wie gesagt die CPU-Last liegt immer bei ca. 2% und wenn ich "Stop" klicke läuft der Rechner ganz normal weiter und hat keine Anzeichen eines "Hängers".

  • Hast du schon versucht ein Programm das nur eine MsgBox o.Ä enthält über einen HotKey zu starten? Wenn es dort das selbe Problem gibt weißt du, dass es nicht am Script liegt. Das einzige was für eine verzögerung innerhalb des Scripts sorgen könnte, sind die etwas verwirrend aufgebauten Schleifen....

  • Ich glaube auch nicht, das es am Script liegt, da ich es zu Hause problemlos nutze. Das Problem tritt bei meinem Rechner in der Firma auf. Es zwickt sich irgendwas anderes, aber ich weiß nicht richtig wie ich das Problem einkreisen soll. Ich benutzte dort noch andere Scripte regelmäßig, welche problemlos laufen. Aber jetzt kann ich eh nicht mehr testen, da ich bis 10.1. Urlaub habe :rock: Aber vielleicht hat ja doch noch einer eine Idee... ansonsten schöne Weihnachten!