ShutDown Manager

  • Ich probiere einen ShutDown Manager zu machen aber leider habe ich
    glaube ich das problem das er ned den inhalt der input box ausliest und
    so nicht funktioniert

    [autoit]

    Dim $timer, $run = False, $label[2]=['Start','Stop']
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 175, 139, 192, 124)
    $Input1 = GUICtrlCreateInput("Sekunden", 40, 32, 89, 21) / 1000
    $Button1 = GUICtrlCreateButton("Button1", 8, 88, 155, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $time = 1

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1
    Sleep($Input1)

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

    MsgBox(0,"","fertig")

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

    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • danke, ich habe leider keinen plan wo ich so einen "handle" einsetzen soll :D bin da ziemlich neu , werst du so lieb ?

    [autoit]

    Dim $timer, $run = False, $label[2]=['Start','Stop']
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 175, 139, 192, 124)
    $Input1 = GUICtrlCreateInput("Sekunden", 40, 32, 89, 21) / 1000
    $Button1 = GUICtrlCreateButton("Button1", 8, 88, 155, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $time = 1

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1

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

    ;? GUICtrlRead($Input1) ?
    Sleep($Input1)

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

    MsgBox(0,"","fertig")

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

    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • guictrlread($Input1) gibt dir den inhalt der input-box als string aus. Du kannst das somit einfach einbauen:
    Sleep(GuiCtrlRead($Input1))
    Ein handle kannst du dir so vorstellen:
    In der Variable wird eine Nummer gespeichert. diese Nummer sagt dem Programm, welches Control (z.B. Input) du meinst. Dadurch kannst du auf das Element zugreifen und es an bestimmte funktionen übergeben. Wenn du $Input1 so verwendest wird diese Nummer zurückgegeben. Da du den Input als erstes erstellst wird dort eine 0 stehen, da es das 1te erstellte Control ist (Nummerierungen fangen immer bei 0 an). Dein Sleep bekommt also die Zahl 0 übergeben und wartet somit garnicht ;)

  • Gar nicht...stell dir vor: ein Handle ist wie eine Adresse...Sleep($Input1) ist also ein ungültiger Wartebefehl da eine Integer-Zahl erwartet wird. Mit GUICtrlRead($Input1) liest du den INHALT dieser Adresse (also in deinem Fall den Inhalt deines Eingabefelds) aus. Damit du diese weiterverwenden kannst musst du diesen Inhalt nun noch einer Variable zuweisen etwa so:

    [autoit]


    $iTimeout = GUICtrlRead($Input1)
    ;anschliessend übergibst du dem sleep-Befehl die Variable
    Sleep($iTimeout)
    ;voila

    [/autoit]

    Alternativ kannst du auch ohne Variable arbeiten (das ist aber sehr unschön):

    [autoit]


    Sleep(GUICtrlRead($Input1))

    [/autoit]

    Das Problem hierbei (und allgemein): diese Methoden interessiert es relativ wenig, was tatsächlich in der Inputbox steht. Es kann also auch "Wurst" drin stehen wodurch das Programm abstürzt. Und merke dir Programmabstürze = böse...keiner will Programme die abstürzen nur weil man selber einen Tippfehler gemacht hat. Sprich: du solltest den Inhalt der Inputbox unbedingt überprüfen bevor du ihn übergibst und gegebenenfalls eine Korrektur anfordern.

    Bild1: Ich beim debuggen

  • Vielen dank für die erklärung :)
    es funktioniert jz alles, immoment bin ich nur noch am schauen wie ich aus denn millisekunden eine sekunde mache , später dann minute, mit einer inputbox * 1000, da steck ich leider noch :D wo ich das genau einsätze vll weist du was dazu :D ?
    mfg
    black

  • Variante1:

    [autoit]


    $iTimeout = GUICtrlRead($Input1)
    Sleep($iTimeout * 1000)

    [/autoit]

    Variante2:

    [autoit]


    Sleep(GUICtrlRead($Input1) * 1000)

    [/autoit]

    Variante3 (ähnlich wie 2, meiner Meinung nach aber etwas angenehmer zu lesen):

    [autoit]


    $iTimeout = GUICtrlRead($Input1) * 1000
    Sleep($iTimeout)

    [/autoit]

    Bild1: Ich beim debuggen