also als aller erstes stimmt etwas mit deinem loop nicht
do … exit do loop??
eigentlich sollte es
do
…
loop while true(a=b, a b, usw)
sein. Ich würde mal spontan sagen das du das ganz einfach machen kannst:
Option Explicit
Dim Tst
Set WHO = WScript.CreateObject(„WScript.Shell“)
WHO.Run „cmd /c shutdown -s -t 30“
Tst = InputBox( „Code eingeben:“, „xD“ )
do
if Tst = „passwort11“ Then
WHO.Run „cmd /c shutdown -a“
end if
loop while Tst „passwort11“
MsgBox „richtig“, , WScript.ScriptName
achtung: nicht getestet, hoffe es klappt! (man braucht admin rechte glaube ich)
das ist auch mit einer VBS direkt nicht zu lösen, da die VBS den Task bei einer Inputbox komplett anhält.
Du brauchst also mindestens 2 Stück.
Ich würde das so aufziehen, dass Du
einen Prozess (2. VBS) anstößt, das nen Sleep(30) und danach nen Shutdown macht und im ersten VBS merkst Du Dir die Prozessid.
(
Set oExec = WshShell.Exec(„calc.exe“)
WScript.Echo oExec.ProcessID
)
Ist das Passwort richtig, schießt Du vom ersten den zweiten Prozess anhand der ID ab.
(
Set colProcessList = objWMIService.ExecQuery(„Select * from Win32_Process where ProcessId =“ & strProcessID)
For Each objProcess in colProcess
objProcess.Terminate()
Next
)
Alles in einem Skript geht schon auch mit Parametern und nem If außenrum. Aber das ist ja quasi das selbe, wie zwei Skripte.
Ich hoffe, Du kannst nachvollziehen, wie ich das meine?
Hallo king_alex,
hier unten einen von mir schnell geschriebenen Code und gerade noch auf Grundfunktion getestet.
Du solltest einfach Passwort und Msgbox anpassen.
Und ggf. Windows Meldungen ausblenden.
Code:
Set WshShell = WScript.CreateObject(„WScript.Shell“)
WshShell.Run „C:\WINDOWS\system32\shutdown.exe -s -f -t 30“
do
Passwort = InputBox(„Passwort eingeben“)
if Passwort = „XxX“ Then
WshShell.Run „C:\WINDOWS\system32\shutdown.exe -a“
MsgBox"Richtig"
else
end if
loop until Passwort = „XxX“
leider schreibst Du nicht, an welcher Stelle es denn hapert. Dein Code sieht doch schonmal gut aus.
Schau Dir mal das Programm PsShutdown an, Du findest es in den „PsTools“ unter http://technet.microsoft.com/de-de/sysinternals/bb89…. Damit kannst Du das Herunterfahren des PCs erzwingen - musst es bloß in Deinen Code einbinden.