ac-michael
Goto Top

VB Script zum Neustart eines Programms und beenden nach Zeit x

Hallo

Ich habe den Code in einem Beitrag hier im Board gesehen:
VB Script zum Beenden und Starten eines Programms
Jetzt habe ich versucht es an meine Bedürfnisse anzupassen:

P = "HtmlWindow1.exe" 'lt Anzeige per "tasklist"  
Prog = """C:\Program Files (x86)\HtmlWindow1\HtmlWindow1.exe"" ""Cams1"" ""C:\Program Files (x86)\HtmlWindow - CamWebsites\2-Cams_v02_Eingang_Terrasse_uebereinander.htm""" 'Pfad zum Programm (für Neustart)  
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
Set Proc = WMI.ExecQuery("Select * from Win32_Process Where Name = '" & P &"'")  
For Each P In Proc
    P.Terminate

Next
WScript.CreateObject ("WScript.Shell").Run Prog  
WScript.Sleep 2000 '2 Sekunden Pause  

P = "HtmlWindow1.exe" 'lt Anzeige per "tasklist"  
Prog = """C:\Program Files (x86)\HtmlWindow1\HtmlWindow1.exe"""  
For Each P In Proc
    P.Terminate

Nur leider funktioniert das so nicht.

Hintergrund - Was ich gerne möchte:
Ab und zu hängt sich das Live Video meiner Kameras, die ich per HtmlWindow auf dem Desktop anzeige, auf.
Deshalb muß das laufende zuerst beendet - und dann neu gestartet werden.
Jetzt möchte ich gerne das das nach einer bestimmten Zeit wieder geschlossen wird um Strom zu sparen.
Habe zu Testzwecken da jetzt 2 Sekunden eingestellt - soll später auf eine halbe Stunde verlängert werden.

Könnt ihr mir sagen wo der Fehler ist ?

Vielen Dank im voraus
AC-Michael

Content-ID: 2848660898

Url: https://administrator.de/forum/vb-script-zum-neustart-eines-programms-und-beenden-nach-zeit-x-2848660898.html

Ausgedruckt am: 26.03.2025 um 04:03 Uhr

colinardo
colinardo 20.05.2022 aktualisiert um 10:45:40 Uhr
Goto Top
Servus.
Da stimmt einiges nicht, mal abgesehen von den Redundanten Deklarierungen.
Dim processName, myProg, objShell, objWMI, proc
processName = "HtmlWindow1.exe"  
myProg = """C:\Program Files (x86)\HtmlWindow1\HtmlWindow1.exe"" ""Cams1"" ""C:\Program Files (x86)\HtmlWindow - CamWebsites\2-Cams_v02_Eingang_Terrasse_uebereinander.htm"""  
Set objShell = CreateObject("Wscript.Shell")  
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
While True
	For Each proc In objWMI.ExecQuery("Select * from Win32_Process Where Name = '" & processName &"'")  
	    proc.Terminate
	Next
	objShell.Run myProg,1,False
	WScript.Sleep 5000
Wend
Grüße Uwe
AC-Michael
AC-Michael 20.05.2022 aktualisiert um 11:54:07 Uhr
Goto Top
@colinardo
Jetzt startet es alle 5 sec neu, anstatt das es beendet wird.
Wie kann ich das stoppen - im Taskmanager finde ich nichts.
Ich kann das nicht beenden.

- Musste mich komplett von Windows abmelden - jetzt ist es wieder aus - hmm
colinardo
colinardo 20.05.2022 aktualisiert um 12:49:56 Uhr
Goto Top
Zitat von @AC-Michael:

@colinardo
Jetzt startet es alle 5 sec neu, anstatt das es beendet wird.
Dachte das wolltest du so, da du den Abschnitt vom Beenden und Starten wiederholt hast, wenn du das nicht willst entferne einfach die While-Wend Schleife ...
Wenn du also nur einmal beenden und neu starten willst machst du das so:
Dim processName, myProg, objShell, objWMI, proc
processName = "HtmlWindow1.exe"  
myProg = """C:\Program Files (x86)\HtmlWindow1\HtmlWindow1.exe"" ""Cams1"" ""C:\Program Files (x86)\HtmlWindow - CamWebsites\2-Cams_v02_Eingang_Terrasse_uebereinander.htm"""  
Set objShell = CreateObject("Wscript.Shell")  
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
For Each proc In objWMI.ExecQuery("Select * from Win32_Process Where Name = '" & processName &"'")  
    proc.Terminate
Next
objShell.Run myProg,1,False
Wie kann ich das stoppen - im Taskmanager finde ich nichts.
Ich kann das nicht beenden.
Wenn du den wscript.exeProzess abschießt ist die Schleife beendet.

Du solltest dich übrigens mit dem Inhalt des Codes mehr auseinandersetzen statt nur Copy n Paste zu machen, dann musst du dich nicht über Dinge wundern face-wink. Never trust foreign code, always understand ist bevor you run it!
AC-Michael
AC-Michael 20.05.2022 um 12:58:41 Uhr
Goto Top
Jetzt wird es beendet und startet neu - soweit so gut.
Es sollte aber nach x-Zeit wieder beendet werden - und dann aber nicht mehr neu gestartet werden.
Das mach ich dann manuell wenn ich wieder drauf schauen will, so das es halt nicht dauernd läuft und Strom verbraucht wird wenn eh keiner hinschaut - das war der Gedanke.

Du hast schon recht das ich auf den Coder schauen soll, nur fehlt mir da leider das Wissen dazu - aber ich bin ja noch am lernen ...

Gruß Michael
colinardo
Lösung colinardo 20.05.2022 aktualisiert um 13:07:12 Uhr
Goto Top
Zitat von @AC-Michael:

Jetzt wird es beendet und startet neu - soweit so gut.
Es sollte aber nach x-Zeit wieder beendet werden - und dann aber nicht mehr neu gestartet werden.
Wenn ich das weiß ist das kein Problem:
Dim processName, myProg, objShell, objWMI, proc
processName = "HtmlWindow1.exe"  
myProg = """C:\Program Files (x86)\HtmlWindow1\HtmlWindow1.exe"" ""Cams1"" ""C:\Program Files (x86)\HtmlWindow - CamWebsites\2-Cams_v02_Eingang_Terrasse_uebereinander.htm"""  
Set objShell = CreateObject("Wscript.Shell")  
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
For Each proc In objWMI.ExecQuery("Select * from Win32_Process Where Name = '" & processName &"'")  
    proc.Terminate
Next
objShell.Run myProg,1,False
wscript.sleep 5000
For Each proc In objWMI.ExecQuery("Select * from Win32_Process Where Name = '" & processName &"'")  
    proc.Terminate
Next

Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.

Grüße Uwe
AC-Michael
AC-Michael 20.05.2022 um 16:05:25 Uhr
Goto Top
Das wars - VIELEN VIELEN DANK !!!
Ich glaube trotz meiner Bemühungen es selber hin zu bekommen, hätte ICH das so nie geschaft.

Gruß
Michael
colinardo
colinardo 20.05.2022 um 16:06:20 Uhr
Goto Top
You're welcome.

Schönes Wochenende.