Ich versuche, ein VB-Skript, das ein anderes VB-Skript neu starten, wenn es abstürzt. Ich habe gesucht und gesucht, aber alles, was ich bekomme, ist, wie man ein Programm neu startet und da ein vb-Skript ein Hintergrundprozess ist, funktioniert es nicht, wenn Sie in Win32_Process suchen.Starten Sie ein VBS-Skript, wenn es abstürzt
Hier ist mein Code
set Service = GetObject ("winmgmts:")
set Shell = WScript.CreateObject("WScript.Shell")
sEXEName = "Test_To_Block.vbs"
while true
bRunning = false
for each Process in Service.InstancesOf ("Win32_Process")
if Process.Name = sEXEName then
bRunning=true
msgbox("I am active")
End If
next
if bRunning=False then
msgbox("I am not active.")
Shell.Run sEXEName
end if
WScript.Sleep(100)
wend
Das Problem ist, dass es nie die Datei laufen zu sehen ist und öffnet nur Hunderte von „Test_To_Stop.vbs“ 's, die in mir löst den Computer neu starten zu müssen.
Meiner Meinung nach, was sollte geändert werden, wo der Code sucht.
for each Process in Service.InstancesOf ("Win32_Process")
Anstatt sich in „Win32_Process“ müssen Sie überall dort, wo Hintergrundprozess laufen schauen.
Ich bin neu in der Codierung so tut mir leid, wenn dies eine einfache Frage ist.
Vielen Dank im Voraus.
Grüße,
A Viper
Sie können [ 'WshShell' object] (https://www.google.ru/search?q=WshScriptExec)' .Exec ("wscript.exe" "C: \ Test \ Test_To_Block.vbs" "" -Methode, um das zu verfolgende Skript auszuführen, gibt diese Methode das Objekt "WshScriptExec" zurück und prüft, ob es sich um die Eigenschaft ".Status" handelt Der Prozess wird beendet und neu gestartet. Sie können sogar alle Funktionen innerhalb einer Skriptdatei kombinieren, die sich selbst starten würde. – omegastripes
@omega Ich mag deine Idee, alles in einen Code zu schreiben, aber wie wird es den Prozess noch verfolgen, wenn der Code einen Fehler hat, endet der Code nicht einfach? –
@omega Vielen Dank im Voraus! –