VBScript - Shutdowndialog mit Timer
Shutdown Dialog anzeigen mit Timer bis automatisch heruntergefahren oder durch den Benutzer über den Dialog abgebrochen wird.
Liebes Forum,
schon häufig habe ich mich bei IT-Problemen an Google gewandt und bin auf Euch gestossen um von der unglaublich tollen Hilfe etwas abzuschöpfen... Ihr habt mir bei so einigen Problemen weitergeholfen - VIELEN DANK DAFÜR!! Im Übrigen eine unglaublich vorbildliche Programmierung des Forums, habe bisher noch NIE ein so benutzerfreundliches gesehen, nicht nur die Programmierung - Auch die ART DER HILFE! - Revolution! (OK genug geschleimt ^^)
Nun zu meinem Problem!
Hintergrund:
Ich bin schon seit nunmehr 6 Stunden damit beschäftigt, den Laptop meiner werten Mutti wieder etwas mehr zu automatisieren.
Da meine liebe Mutti oft den Laptop mitsamt Video vor dem Einschlafen neben sich stehen lässt und es nicht mehr schafft ihn auszumachen. (Ein bisschen Öko bin ich ja schon)
Für die Umsetzung meiner Idee benötige ich die Möglichkeit, den Computer: Windows Vista, x86 (32-Bit) - Automatisch herunterfahren zu lassen, sobald keine Aktivität mehr vorhanden ist.
Einfach Programm aus dem Internet nutzen? - Will ich nicht! - Warum:
Dies lässt sich mit zwar mit externen Programmen (Autoshutdown etc.) realisieren, jedoch fehlt mir darin einfach die Transparenz, da solche Programme nicht OpenSource sind und ich mich bzw. meine Mutti 1. Performancemässig im Nachteil sehe, außerdem 2. Die Sicherheit fehlt, dass das Programm keinen Quatsch anstellt (Ala unnötige Registry-/Dll-/Treiber-Einträge o. ä.). - Das System soll ABSOLUT SAUBER vor solchem Quatsch bleiben, deswegen kommen auch nur die nötigsten und sinnvollsten Programme auf diesen Rechner.
Ich bitte diesbezüglich keine Diskussion anzufangen, ich möchte schließlich einen Lösungsweg zu meinem Problem der Realisierung dieser Idee (Das selbstständige Programmieren/Scripten einer solchen Dienstleistung) und nicht des (nichtvorhandenen Problemes) der "Nicht-Einsicht" bzw. der Nichtakzeptierung fremder Software. - Sofern das jemand annehmen sollte. - Ich möchte nicht diskutieren wie sinnvoll es ist, denn das ist es für mich.
- Gebe ich nur deswegen an, da in vielen Foren diskutiert wird warum und wie sehr man etwas möchte -
Meine Realisierungsidee:
Ich wollte das ganze nun per VBS-Script realisieren, konnte es aber in keinster Weise in eine Funktionalität zustandebringen, die weiterbrachte - meine Lösungsidee war nun, das Script um eine bestimmte Uhrzeit (22:30 Uhr) starten zu lassen, damit es:
Einen Dialog anzeigt mit der Frage, ob der Computer heruntergefahren werden soll.
Falls Nein, sollte das Script dann 1 Stunde warten und diesen Dialog erneut anzeigen.
Falls Ja, sollte das Script den Computer bei Ablauf der 5 Minuten ab dem Anzeigen des Dialoges ohne Wenn und Aber herunterfahren.
Falls 5 Minuten keine Eingabe im Dialog geschieht, soll der Computer ohne Wenn und Aber herunterfahren.
Mein Script (bin nicht stolz auf "Mein" Script, sondern möchte hier nur hervorheben damit man beim Überfliegen schnell findet was man sucht :P)
hatte viele verschiedene Aussehen, jedes mal in VBS, konnte jedoch keine Lösung erarbeiten.
Aktuell sieht es so aus:
Wie Ihr sicher schon herausgelesen habt - besonders viel Erfahrung in VBS oder BATCH habe ich nicht, dennoch gebe ich mir alle Mühe.
Das einzige was ich relativ gut kenne ist LSL (Linden Scripting Language) und HTML.
Wie also könnte ich es noch realisieren?
Kann ich bei VBS etwas besser machen (Fehler)?
Sollte ich eine andere Programmiersprache benutzen?
Gibt es vielleicht sogar eine noch bessere Lösung (Mit Aktivitätsüberwachung und Shutdown-Timer) mithilfe von VBS und/oder Batch?
Oder gibt es für mich nur Hoffnung, ein Programm aus dem Netz zu benutzen (was ich nicht möchte).
Aber schließlich möchte ich auch nicht mein halbes Leben nur wegen einem "Shutdown Timer" verplempern... So viel ist es meiner Mutti dann sicher auch nicht wert...
Mit lieben Gruß
Der Registrar
Liebes Forum,
schon häufig habe ich mich bei IT-Problemen an Google gewandt und bin auf Euch gestossen um von der unglaublich tollen Hilfe etwas abzuschöpfen... Ihr habt mir bei so einigen Problemen weitergeholfen - VIELEN DANK DAFÜR!! Im Übrigen eine unglaublich vorbildliche Programmierung des Forums, habe bisher noch NIE ein so benutzerfreundliches gesehen, nicht nur die Programmierung - Auch die ART DER HILFE! - Revolution! (OK genug geschleimt ^^)
Nun zu meinem Problem!
Hintergrund:
Ich bin schon seit nunmehr 6 Stunden damit beschäftigt, den Laptop meiner werten Mutti wieder etwas mehr zu automatisieren.
Da meine liebe Mutti oft den Laptop mitsamt Video vor dem Einschlafen neben sich stehen lässt und es nicht mehr schafft ihn auszumachen. (Ein bisschen Öko bin ich ja schon)
Für die Umsetzung meiner Idee benötige ich die Möglichkeit, den Computer: Windows Vista, x86 (32-Bit) - Automatisch herunterfahren zu lassen, sobald keine Aktivität mehr vorhanden ist.
Einfach Programm aus dem Internet nutzen? - Will ich nicht! - Warum:
Dies lässt sich mit zwar mit externen Programmen (Autoshutdown etc.) realisieren, jedoch fehlt mir darin einfach die Transparenz, da solche Programme nicht OpenSource sind und ich mich bzw. meine Mutti 1. Performancemässig im Nachteil sehe, außerdem 2. Die Sicherheit fehlt, dass das Programm keinen Quatsch anstellt (Ala unnötige Registry-/Dll-/Treiber-Einträge o. ä.). - Das System soll ABSOLUT SAUBER vor solchem Quatsch bleiben, deswegen kommen auch nur die nötigsten und sinnvollsten Programme auf diesen Rechner.
Ich bitte diesbezüglich keine Diskussion anzufangen, ich möchte schließlich einen Lösungsweg zu meinem Problem der Realisierung dieser Idee (Das selbstständige Programmieren/Scripten einer solchen Dienstleistung) und nicht des (nichtvorhandenen Problemes) der "Nicht-Einsicht" bzw. der Nichtakzeptierung fremder Software. - Sofern das jemand annehmen sollte. - Ich möchte nicht diskutieren wie sinnvoll es ist, denn das ist es für mich.
- Gebe ich nur deswegen an, da in vielen Foren diskutiert wird warum und wie sehr man etwas möchte -
Meine Realisierungsidee:
Ich wollte das ganze nun per VBS-Script realisieren, konnte es aber in keinster Weise in eine Funktionalität zustandebringen, die weiterbrachte - meine Lösungsidee war nun, das Script um eine bestimmte Uhrzeit (22:30 Uhr) starten zu lassen, damit es:
Einen Dialog anzeigt mit der Frage, ob der Computer heruntergefahren werden soll.
Falls Nein, sollte das Script dann 1 Stunde warten und diesen Dialog erneut anzeigen.
Falls Ja, sollte das Script den Computer bei Ablauf der 5 Minuten ab dem Anzeigen des Dialoges ohne Wenn und Aber herunterfahren.
Falls 5 Minuten keine Eingabe im Dialog geschieht, soll der Computer ohne Wenn und Aber herunterfahren.
Mein Script (bin nicht stolz auf "Mein" Script, sondern möchte hier nur hervorheben damit man beim Überfliegen schnell findet was man sucht :P)
hatte viele verschiedene Aussehen, jedes mal in VBS, konnte jedoch keine Lösung erarbeiten.
Aktuell sieht es so aus:
set wshell = CreateObject("Wscript.shell")
Dim Dialog, Waiting, a
Dialog=0
Waiting=0
a="leer"
Do While (Running=1)
Do While (Dialog=0) AND (Waiting=0)
Dialog=1
Waiting=0
runterfahren = MsgBox("Soll der Computer in 5 Minuten heruntergefahren werden?", vbYesNo + vbQuestion, "Herunterfahren")
If runterfahren = vbNo Then
ab = MsgBox("Der Computer wird nicht heruntergefahren. Erneuter Versuch in 1 Stunde.", vbOK, "Herunterfahren")
Waiting=-3599700
Else If runterfahren = vbYes Then
Dialog=0
Waiting=301
End If
Do While (Waiting<=300)
wscript.sleep (1000)
Waiting=Waiting+1
Loop
Do While (Dialog=0) AND (Waiting>=300)
WScript.Quit
Loop
Loop
Wie Ihr sicher schon herausgelesen habt - besonders viel Erfahrung in VBS oder BATCH habe ich nicht, dennoch gebe ich mir alle Mühe.
Das einzige was ich relativ gut kenne ist LSL (Linden Scripting Language) und HTML.
Wie also könnte ich es noch realisieren?
Kann ich bei VBS etwas besser machen (Fehler)?
Sollte ich eine andere Programmiersprache benutzen?
Gibt es vielleicht sogar eine noch bessere Lösung (Mit Aktivitätsüberwachung und Shutdown-Timer) mithilfe von VBS und/oder Batch?
Oder gibt es für mich nur Hoffnung, ein Programm aus dem Netz zu benutzen (was ich nicht möchte).
Aber schließlich möchte ich auch nicht mein halbes Leben nur wegen einem "Shutdown Timer" verplempern... So viel ist es meiner Mutti dann sicher auch nicht wert...
Mit lieben Gruß
Der Registrar
Please also mark the comments that contributed to the solution of the article
Content-ID: 159428
Url: https://administrator.de/forum/vbscript-shutdowndialog-mit-timer-159428.html
Printed on: May 13, 2025 at 12:05 o'clock
11 Comments
Latest comment
Hallo Der Registrar,
ich würde es etwas anders machen. Warum?
1) wenn du eine Messagbox startest, dann wartet das Programm, bis jemand etwas tut
(ok oder cancel drücken, Stecker ziehen etc.)
Das heißt, dein "Timer" läuft da nicht und der Rechner bleibt schon wieder die ganze Nacht an.
Wie wäre da ein Popup-fenster an dieser Stelle, dass aussieht, wie eine Messagebox?
Beispiel:
Jetzt könntest du "a" abfragen, ob was passiert ist und wenn JA, welcher Button wurde gedrückt.
JA = 6
Nein = 7
Keiner von beiden = -1
Du kannst auch die Stunde Wartezeit wie folgt ablaufen lassen
jetzt würde die FOR-Schleife maximal 4 Mal aufgerufen. Heißt in dem Beispiel bis zu 4 Stunden maximal.
Vielleicht sind das ein paar Anregungen, dich in deinem Vorhaben weiterzubringen.
Gruss
Tsuki
ich würde es etwas anders machen. Warum?
1) wenn du eine Messagbox startest, dann wartet das Programm, bis jemand etwas tut
(ok oder cancel drücken, Stecker ziehen etc.)
Das heißt, dein "Timer" läuft da nicht und der Rechner bleibt schon wieder die ganze Nacht an.
Wie wäre da ein Popup-fenster an dieser Stelle, dass aussieht, wie eine Messagebox?
Beispiel:
Set ws = CreateObject("WScript.Shell")
a = ws.popup( "Nach 3 Sekunden bin ich wieder weg.",3,"Messageboxmeldung",vbyesno)
msgbox a
JA = 6
Nein = 7
Keiner von beiden = -1
Du kannst auch die Stunde Wartezeit wie folgt ablaufen lassen
Dim Wartezeit
Wartezeit = 3600000 ' eine Stunde in Millisekunden
for i = 0 to 3
'Aufruf einer Sub-Routine zum Beispiel
' in der du deine Abfragen reinbastelst
Wscript.Sleep Wartezeit
next
Wscript.Quit
Vielleicht sind das ein paar Anregungen, dich in deinem Vorhaben weiterzubringen.
Gruss
Tsuki
Ok, ich sehe - Ein vollnoob am Werk *schäm*.
Macht ja nix. Wir üben alle noch
vergleiche mal bitte:
Dim Wartezeit
Wartezeit = 3600000 ' eine Stunde in Millisekunden
for i = 0 to 3
Set ws = CreateObject("WScript.Shell")
a = ws.popup( "Der Computer soll in 1 Minute runterfahren. Abbrechen?",60,"Messageboxmeldung",vbyesno)
If a=6 Then
Wscript.Sleep Wartezeit
Else
Set oShell = WScript.CreateObject("WScript.Shell")
oShell.Run "C:\Users\User\Systemdateien\Shutdown\shutdown.bat", 0
End If
Next
Gruss
Tsuki

Hallo zusammen!
Das Problem hat Tsuki mit den richtigen Ansätzen ja eigentlich schon gelöst, aber es könnte auch etwas einfacher gehen.
Auf jeden Fall, würde ich bei älteren Leuten eine einfachere Fragestellung in der PopUp-Meldung ausgeben, die unmissverständlich eine Ja/Nein-Beantwortung zuläßt
Das mit der For-Schleife verstehe ich auch nicht ganz, weil wenn Deine Omi 4 Stunden durchhält, dann würde der Laptop danach ohne weitere Abfragen die ganze Nacht über durchlaufen?
Also mein Lösungsvorschlag würde etwas vereinfacht so aussehen:
Gruß Dieter
Das Problem hat Tsuki mit den richtigen Ansätzen ja eigentlich schon gelöst, aber es könnte auch etwas einfacher gehen.
Auf jeden Fall, würde ich bei älteren Leuten eine einfachere Fragestellung in der PopUp-Meldung ausgeben, die unmissverständlich eine Ja/Nein-Beantwortung zuläßt
Das mit der For-Schleife verstehe ich auch nicht ganz, weil wenn Deine Omi 4 Stunden durchhält, dann würde der Laptop danach ohne weitere Abfragen die ganze Nacht über durchlaufen?
Also mein Lösungsvorschlag würde etwas vereinfacht so aussehen:
Const Msg = "Soll der Laptop jetzt herunterfahren?"
Set oShell = CreateObject("WScript.Shell")
Do While oShell.PopUp(Msg, 60, "Meldung...", vbYesNo) = vbNo
Wscript.Sleep 3600000
Loop
oShell.Run "C:\Users\User\Systemdateien\Shutdown\shutdown.bat", 0
Gruß Dieter

Hallo DerRegistrar!
Sorry, weiß auch nicht, wie ich auf die Omi gekommen bin. War jedenfalls mit "i" am Ende
Naja und zu Deinem Code, den Du so mühsam erarbeitet hast, sage ich mal besser nix
Jedenfalls, brauchst mit dieser Codezeile keine extra Batch-Datei:
Gruß Dieter
Sorry, weiß auch nicht, wie ich auf die Omi gekommen bin. War jedenfalls mit "i" am Ende
Naja und zu Deinem Code, den Du so mühsam erarbeitet hast, sage ich mal besser nix
Jedenfalls, brauchst mit dieser Codezeile keine extra Batch-Datei:
oShell.Run "cmd \c shutdown -s -t 60 -f", 0
Gruß Dieter