Tut mir leid, ich kann den Ablauf nicht so ganz nachvollziehen. Für mich kommen am Ende immer zwei S*****s raus - eins das die EXE beendet und eins das die EXE wieder startet.
So wie du das haben möchtest ist es auch möglich, aber dann würde das WMI-Objekt eine dauerhafte Abfrage der Prozessliste machen und das würde dich konstant 30-40% CPU-Last kosten.
//Edit:
Falls du es trotz allem mit den S*****en noch einmal versuchen möchtest. Ich hoffe, dass der Syntax für den Aufruf von Steam jetzt korrekt ist - Leerzeichen in der Pfadangabe sind der Tod und sollten verboten werden...
S***** zum beenden:
Code:
strComputer = "."
strProcessKill = "'iw4mp.exe'"
Set WshShell = CreateObject("WS*****.Shell")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next
S***** zum starten
Code:
Set WshShell = CreateObject("WS*****.Shell")
WshShell.Run("""D:\Program Files\Steam\Steam.exe"" -applaunch 10190")
WS*****.Sleep 6000
WshShell.AppActivate "Im abgesicherten Modus starten?"
WS*****.Sleep 200
WshShell.SendKeys ("{TAB}")
WshShell.SendKeys ("{ENTER}")