GUI für Shutdown

  • Hey ich bau mir hier grad nen Script indem man in einem Fenster eine Zahl eigeben kann. Diese Zahl gibt die Minuten an in denen der PC herrunter gefahren wird. Komm grade aber iwie nicht weiter. :/

    [autoit]

    GUICreate ("Shutdown Einstellungen", 200,200)
    WinSetOnTop("Shutdown Einstellungen", "", 1)

    GUISetState(@SW_SHOW)
    Opt("GUIOnEventMode", 1)

    GUICtrlcreatelabel ("Zeit bis zum Shutdown:",10,15)
    $endbutton2 = GUICtrlCreateButton ("Ende", 135, 170, 55)
    GUICtrlSetOnEvent($endbutton2, "Ende")
    $number1 = GUICtrlCreateEdit ("", 10,45,50,20,0)
    GUICtrlCreateButton ("Ok", 70, 45,30,21)

    [/autoit]

    Einmal editiert, zuletzt von Hacksor (9. Februar 2009 um 16:24)

  • Hab dein Beispiel jetzt gar nicht angeschaut. Ich mach es immer einfach und zweckmäßig
    Das von mir verwendete Skript:

    [autoit]

    $Minuten = InputBox("Wie lange noch?","In wievielen Minuten soll der PC heruntergefahren werden?",1)
    If @error = 1 Then Exit
    Sleep(1000 * 60 *$Minuten)
    Shutdown(9)

    [/autoit]
  • Hallo!

    Ist doch garnicht so schwer ;)

    Spoiler anzeigen
    [autoit]

    #Region GUI
    GUICreate("Shutdown Einstellungen", 200, 200)
    WinSetOnTop("Shutdown Einstellungen", "", 1)

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

    GUISetState(@SW_SHOW)
    Opt("GUIOnEventMode", 1)

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

    GUICtrlCreateLabel("Zeit bis zum Shutdown:", 10, 15)
    $endbutton2 = GUICtrlCreateButton("Ende", 135, 170, 55)
    GUICtrlSetOnEvent($endbutton2, "Ende")
    $number1 = GUICtrlCreateEdit("", 10, 45, 50, 20, 0)
    GUISetOnEvent(-1, "_shutdown")

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

    While 1
    Sleep(100)
    WEnd
    #EndRegion GUI

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

    Func Ende()
    Exit
    EndFunc ;==>Ende

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

    Func _shutdown()
    $minuten = GUICtrlRead($number1, 0)
    $sekunden = $minuten * 60
    If $sekunden > 600 Or $sekunden < 0 Then MsgBox(16, "Fehler", "Zahl ungültig." & @CRLF & @CRLF & "0-10 ist gültig.")
    _RunDOS("shutdown /s /t " & $sekunden)
    EndFunc ;==>_shutdown

    [/autoit]
  • Danke...xD
    wollte des irgendwie viel zu umständlich anpacken. Vllt melde ich mich nochmal.^^


    @Matthias: Da is irgend nen Fehler drin...zumindest kann ichs net ausführen! :(

    C:\Dokumente und Einstellungen\Besitzer\Desktop\Autoit\10.au3(81,12) : ERROR: Ende() already defined.
    Func Ende()
    ~~~~~~~~~~~^
    C:\Dokumente und Einstellungen\Besitzer\Desktop\Autoit\10.au3(32,39) : ERROR: sdown(): undefined function.
    GUICtrlSetOnEvent($shutbutton, "sdown")
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Dokumente und Einstellungen\Besitzer\Desktop\Autoit\10.au3(77,42) : ERROR: _RunDOS(): undefined function.
    _RunDOS("shutdown /s /t " & $sekunden)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Dokumente und Einstellungen\Besitzer\Desktop\Autoit\10.au3 - 3 error(s), 0 warning(s)

  • bei mir gehts einwandfrei ?(
    ersetz sdown durch _shutdown
    und du brauchst noch #include <Process.au3>
    so:

    Spoiler anzeigen
    [autoit]


    #include <Process.au3>
    #Region GUI
    GUICreate("Shutdown Einstellungen", 200, 200)
    WinSetOnTop("Shutdown Einstellungen", "", 1)

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

    GUISetState(@SW_SHOW)
    Opt("GUIOnEventMode", 1)

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

    GUICtrlCreateLabel("Zeit bis zum Shutdown:", 10, 15)
    $endbutton2 = GUICtrlCreateButton("Ende", 135, 170, 55)
    GUICtrlSetOnEvent($endbutton2, "Ende")
    $number1 = GUICtrlCreateEdit("", 10, 45, 50, 20, 0)
    GUISetOnEvent(-1, "_shutdown")

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

    While 1
    Sleep(100)
    WEnd
    #EndRegion GUI

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

    Func Ende()
    Exit
    EndFunc ;==>Ende

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

    Func _shutdown()
    $minuten = GUICtrlRead($number1, 0)
    $sekunden = $minuten * 60
    If $sekunden > 600 Or $sekunden < 0 Then MsgBox(16, "Fehler", "Zahl ungültig." & @CRLF & @CRLF & "0-10 ist gültig.")
    _RunDOS("shutdown /s /t " & $sekunden)
    EndFunc ;==>_shutdown

    [/autoit]

    Padmak

  • [autoit]

    ;Erstelle GUI
    Func sdown()
    GUICreate("Shutdown Einstellungen", 200, 200)
    WinSetOnTop("Shutdown Einstellungen", "", 1)
    GUISetState(@SW_SHOW)
    Opt("GUIOnEventMode", 1)

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

    GUICtrlCreateLabel("Zeit bis zum Shutdown:", 10, 15)

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

    ;Endebutton
    $endbutton2 = GUICtrlCreateButton("Ende", 135, 170, 55)
    GUICtrlSetOnEvent($endbutton2, "Ende")

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

    ;Engabefeld
    $number1 = GUICtrlCreateEdit("", 10, 45, 50, 20, 0)
    GUISetOnEvent(-1, "_shutdown")
    EndFunc

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

    Func _shutdown()
    $minuten = GUICtrlRead($number1, 0)
    $sekunden = $minuten * 60
    If $sekunden > 600 Or $sekunden < 0 Then MsgBox(16, "Fehler", "Zahl ungültig." & @CRLF & @CRLF & "0-10 ist gültig.")
    _RunDOS("shutdown /s /t " & $sekunden)
    EndFunc

    [/autoit]

    Wo is da der Denkfehler?^^

    • Offizieller Beitrag

    Da fehlt eine Include.

    [autoit]

    #include <Process.au3>
    #Region GUI
    GUICreate("Shutdown Einstellungen", 200, 200)
    WinSetOnTop("Shutdown Einstellungen", "", 1)

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

    GUISetState(@SW_SHOW)
    Opt("GUIOnEventMode", 1)

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

    GUICtrlCreateLabel("Zeit bis zum Shutdown:", 10, 15)
    $endbutton2 = GUICtrlCreateButton("Ende", 135, 170, 55)
    GUICtrlSetOnEvent($endbutton2, "Ende")
    $number1 = GUICtrlCreateEdit("", 10, 45, 50, 20, 0)
    GUISetOnEvent(-1, "_shutdown")

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

    While 1
    Sleep(100)
    WEnd
    #EndRegion GUI

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

    Func Ende()
    Exit
    EndFunc ;==>Ende

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

    Func _shutdown()
    $minuten = GUICtrlRead($number1, 0)
    $sekunden = $minuten * 60
    If $sekunden > 600 Or $sekunden < 0 Then MsgBox(16, "Fehler", "Zahl ungültig." & @CRLF & @CRLF & "0-10 ist gültig.")
    _RunDOS("shutdown /s /t " & $sekunden)
    EndFunc ;==>_shutdown

    [/autoit]

    Edit wieder mal zu lagsam :(

  • 1. Opt() gehört immer nach ganz oben
    2. fehlt die Funktion Ende()
    3. hast du des include noch nich drin^^
    4. musst du des input Global deklarieren

    Padmak

  • Des sieht gut aus...Fenster geht auf usw.
    Aaaaber der "Ok" bzw Bestätigen-Button is nun weg...wie soll ich nun die Zeit bestätigen?

    [autoit]

    #include <Process.au3>
    #Region GUI
    GUICreate("Shutdown Einstellungen", 200, 200)
    WinSetOnTop("Shutdown Einstellungen", "", 1)

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

    GUISetState(@SW_SHOW)
    Opt("GUIOnEventMode", 1)

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

    GUICtrlCreateLabel("Zeit bis zum Shutdown:", 10, 15)
    $endbutton2 = GUICtrlCreateButton("Ende", 135, 170, 55)
    GUICtrlSetOnEvent($endbutton2, "Ende")
    $number1 = GUICtrlCreateEdit("", 10, 45, 50, 20, 0)
    GUISetOnEvent(-1, "_shutdown")

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

    While 1
    Sleep(100)
    WEnd
    #EndRegion GUI

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

    Func Ende()
    Exit
    EndFunc ;==>Ende

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

    Func _shutdown()
    $minuten = GUICtrlRead($number1, 0)
    $sekunden = $minuten * 60
    If $sekunden > 600 Or $sekunden < 0 Then MsgBox(16, "Fehler", "Zahl ungültig." & @CRLF & @CRLF & "0-10 ist gültig.")
    _RunDOS("shutdown /s /t " & $sekunden)
    EndFunc ;==>_shutdown

    [/autoit]
  • Ist doch klar ?( ?(
    du hast ja gar keinen Button erstellt?
    du weist die Funktion dem Edit zu ?( ?(
    wie soll denn das gehen?
    Code lesen und verstehen ist nicht verboten :D

    Padmak

  • Also knall ich da noch nen Button rein...aber wie weiße ich dem die Aufgabe zu dass er wenn ich "Ok" klicke dann die zahl auswertet usw?

  • Hab ich aber ich bekomm immer nen Error:

    C:\Programme\AutoIt3\Include\Process.au3(25,1) : ERROR: syntax error
    Func
    ^

    Ich sollte vllt sagen dass der Shutdown nur ein Teil eines größeren Programmes ist!
    D.h. ich klick in meiner Haupt - GUI auf nen Button "Shutdown" und dann geht das Shutdown-Fenster auf.
    Also muss ich ja diesen Teil (Shutdown) meines Scriptes als Funktion in mein hauptscript einbaun oder?
    Also den Shutdown-Button im Hauptprog die funktion _shutdown zuweißen und dann ne Func _shutdown()
    später einfügen wo ich meine shutdown-GUI dann ausführen will.

    Ich hoffe du verstehst dass. Momentan siehts so aus:

    [autoit]

    ;Shutdown
    Func _shutdown()
    #include <Process.au3>
    #Region GUI
    GUICreate("Shutdown Einstellungen", 200, 200)
    WinSetOnTop("Shutdown Einstellungen", "", 1)

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

    GUISetState(@SW_SHOW)
    Opt("GUIOnEventMode", 1)

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

    GUICtrlCreateLabel("Zeit bis zum Shutdown:", 10, 15)
    $endbutton2 = GUICtrlCreateButton("Ende", 135, 170, 55)
    GUICtrlSetOnEvent($endbutton2, "Ende")
    $number1 = GUICtrlCreateEdit("", 10, 45, 50, 20, 0)
    $okbutton = GUICtrlCreateButton("Bestätigen", 75, 45, 65)
    GUICtrlSetOnEvent($okbutton, "Bestaetigen")

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

    While 1
    Sleep(100)
    WEnd
    #EndRegion GUI
    EndFunc

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

    Func Bestaetigen()
    $minuten = GUICtrlRead($number1, 0)
    $sekunden = $minuten * 60
    If $sekunden > 600 Or $sekunden < 0 Then MsgBox(16, "Fehler", "Zahl ungültig." & @CRLF & @CRLF & "0-10 ist gültig.")
    _RunDOS("shutdown /s /t " & $sekunden)
    EndFunc ;==>_shutdown

    [/autoit]

    PS: Ende ist schon im Hauptscript als Funktion eingefügt!^^

  • Den OK-Button hab ich weggemacht, bei meinem Skript reichts, wenn du nach der Eingabe Enter drückst, oder wo anders hinklickst :D

  • des da oben passt doch^^
    ich würde eine while schleife fürs ganze script einbauen, und zwar ganz unten
    dann fängt es alles auf

    Padmak

  • Da oben kommt aber der Syntax Error....Func ^

    Hier des gesammte Script...mach des erst seit 3 Tagen falls ich was zu umständlich gemacht habe! xD

    Spoiler anzeigen
    [autoit]

    ;setze Veriablen
    Dim $cmd
    $cmd = @WindowsDir & "\system32\cmd.exe"
    Dim $reg
    $reg = @WindowsDir & "\regedit.exe"

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

    ;erstelle Fenster
    #include <GUIConstants.au3>

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

    GUICreate ("Windoof Quick Set", 300,150)
    WinSetOnTop("Windoof Quick Set", "", 1)

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

    ; Buttons werden erstellt ------
    $cmdbutton = GUICtrlCreateButton ("cmd", 10,30, 55)
    $regbutton = GUICtrlCreateButton ("Regedit", 10,60, 55)
    $downbutton = GUICtrlCreateButton ("Shutdown", 10, 90, 55)

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

    ;Ende
    $endbutton = GUICtrlCreateButton ("Ende", 240, 120, 55)

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

    ;Label
    GUICtrlcreatelabel ("(c) SSS-Productions",10,5)

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

    GUISetState(@SW_SHOW)
    Opt("GUIOnEventMode", 1)

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

    GUICtrlSetOnEvent($cmdbutton, "cmd")
    GUICtrlSetOnEvent($regbutton, "Regedit")
    GUICtrlSetOnEvent($downbutton, "_shutdown")

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

    ;Ende
    GUICtrlSetOnEvent($endbutton, "Ende")
    GUICtrlSetOnEvent($GUI_EVENT_CLOSE, "Ende")

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

    Global $ergebnis
    While 1
    Sleep (1)
    WEnd

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

    ;cmd
    Func cmd()
    GUICtrlSetData ($ergebnis , Run ($cmd))
    EndFunc ;==>_cmd

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

    ;Regedit
    Func Regedit()
    GUICtrlSetData ($ergebnis , Run ($reg))

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

    EndFunc ;==>_regedit

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

    ;Ende
    Func Ende()
    Exit
    EndFunc ;==>_ende

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

    ;Shutdown
    Func _shutdown()
    #Region GUI
    GUICreate("Shutdown Einstellungen", 200, 200)
    WinSetOnTop("Shutdown Einstellungen", "", 1)

    GUISetState(@SW_SHOW)
    Opt("GUIOnEventMode", 1)

    GUICtrlCreateLabel("Zeit bis zum Shutdown:", 10, 15)
    $endbutton2 = GUICtrlCreateButton("Ende", 135, 170, 55)
    GUICtrlSetOnEvent($endbutton2, "Ende")
    $number1 = GUICtrlCreateEdit("", 10, 45, 50, 20, 0)
    $okbutton = GUICtrlCreateButton("Bestätigen", 75, 45, 65)
    GUICtrlSetOnEvent($okbutton, "Bestaetigen")

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

    While 1
    Sleep(100)
    WEnd
    #EndRegion GUI
    EndFunc

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

    Func Bestaetigen()
    $minuten = GUICtrlRead($number1, 0)
    $sekunden = $minuten * 60
    If $sekunden > 600 Or $sekunden < 0 Then MsgBox(16, "Fehler", "Zahl ungültig." & @CRLF & @CRLF & "0-10 ist gültig.")
    _RunDOS("shutdown /s /t " & $sekunden)
    EndFunc ;==>_shutdown

    [/autoit]
  • syntax error hab ich kein
    aber so gehts auf jeden fall

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <Process.au3>
    ;setze Veriablen
    Dim $cmd
    $cmd = @WindowsDir & "\system32\cmd.exe"
    Dim $reg
    $reg = @WindowsDir & "\regedit.exe"
    Global $number1, $endbutton2

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

    ;erstelle Fenster

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

    GUICreate ("Windoof Quick Set", 300,150)
    WinSetOnTop("Windoof Quick Set", "", 1)

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

    ; Buttons werden erstellt ------
    $cmdbutton = GUICtrlCreateButton ("cmd", 10,30, 55)
    $regbutton = GUICtrlCreateButton ("Regedit", 10,60, 55)
    $downbutton = GUICtrlCreateButton ("Shutdown", 10, 90, 55)

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

    ;Ende
    $endbutton = GUICtrlCreateButton ("Ende", 240, 120, 55)

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

    ;Label
    GUICtrlcreatelabel ("(c) SSS-Productions",10,5)

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

    GUISetState(@SW_SHOW)
    Opt("GUIOnEventMode", 1)

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

    GUICtrlSetOnEvent($cmdbutton, "cmd")
    GUICtrlSetOnEvent($regbutton, "Regedit")
    GUICtrlSetOnEvent($downbutton, "_shutdown")

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

    ;Ende
    GUICtrlSetOnEvent($endbutton, "Ende")
    GUICtrlSetOnEvent($GUI_EVENT_CLOSE, "Ende")

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

    Global $ergebnis

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

    ;cmd
    Func cmd()
    GUICtrlSetData ($ergebnis , Run ($cmd))
    EndFunc ;==>_cmd

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

    ;Regedit
    Func Regedit()
    GUICtrlSetData ($ergebnis , Run ($reg))

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

    EndFunc ;==>_regedit

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

    ;Ende
    Func Ende()
    If @GUI_CtrlId = $endbutton2 Then
    GUIDelete()
    Else
    Exit
    EndIf
    EndFunc ;==>_ende

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

    ;Shutdown
    Func _shutdown()
    #Region GUI
    GUICreate("Shutdown Einstellungen", 200, 200)
    WinSetOnTop("Shutdown Einstellungen", "", 1)

    GUISetState(@SW_SHOW)
    Opt("GUIOnEventMode", 1)

    GUICtrlCreateLabel("Zeit bis zum Shutdown:", 10, 15)
    $endbutton2 = GUICtrlCreateButton("Ende", 135, 170, 55)
    GUICtrlSetOnEvent($endbutton2, "Ende")
    Global $number1 = GUICtrlCreateEdit("", 10, 45, 50, 20, 0)
    $okbutton = GUICtrlCreateButton("Bestätigen", 75, 45, 65)
    GUICtrlSetOnEvent($okbutton, "Bestaetigen")

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

    #EndRegion GUI
    EndFunc

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

    Func Bestaetigen()
    $minuten = GUICtrlRead($number1, 0)
    $sekunden = $minuten * 60
    If $sekunden > 600 Or $sekunden < 0 Then MsgBox(16, "Fehler", "Zahl ungültig." & @CRLF & @CRLF & "0-10 ist gültig.")
    _RunDOS("shutdown /s /t " & $sekunden)
    EndFunc ;==>_shutdown
    While 1
    Sleep(10)
    WEnd

    [/autoit]

    Padmak