VBSript zum prüfen und schließen einer Anwendung nach Zeit

lunaticx

Software-Overclocker(in)
VBSript zum prüfen und schließen einer Anwendung nach Zeit

Hello zusammen,

ich benötige Hilfe beim erstellen eines VBScript.

Vorweg, meine Programmierkenntnisse sind so gut wie nicht vorhanden.
Was ich bisher erreicht habe ist eben aus dem Internet zusammen gestückelt.

Ich benötige ein Script was prüft ob ein Prozess (Internet Explorer in diesem Fall) läuft.
Wenn ja -> warte X Minuten / Sekunden -> schließe den Prozess
Wenn nein -> warte X Minuten / Sekunden -> starte erneut die Abfrage.

Was ich bisher erarbeitet habe:
pause = 30 'Pause in Sekunden, hier aendern...
Do
Set WshShell = WScript.CreateObject("WScript.Shell")
Set locator = CreateObject("WbemScripting.SWbemLocator")
Set service = locator.ConnectServer()
Set props = service.ExecQuery _
("select name, description from Win32_Process where name = 'iexplore.exe'")
num = props.Count

If num = 0 then WScript.Sleep(pause * 1000) 'schlaeft 60 * 1000 Tausendstel Sekunden
WshShell.Exec "PSKill -t iexplore.exe"

Loop

Allerdings macht dieses Skript eben nicht genau das was ich möchte.
Es schläft eben nur 30 Sekunden und tötet dann den Prozess, wartet aber nicht ab nachdem es den Prozess gefunden hat.

Habe bereits versucht ein zweite If, elseif, else einzubauen -> klappt nicht :(

Bin da um jede Hilfe dankbar :)

Greetz
 
AW: VBSript zum prüfen und schließen einer Anwendung nach Zeit

Okay ... die Seite hatte ich auch bereits gefunden, keine Ahnung warum ich mich da nicht ordentlich dran gehalten habe.

Seite gelesen und Skript modifiziert:
pause = 10 'Pause in Sekunden, hier aendern...

Do
Set WshShell = WScript.CreateObject("WScript.Shell")
Set locator = CreateObject("WbemScripting.SWbemLocator")
Set service = locator.ConnectServer()
Set props = service.ExecQuery _
("select name, description from Win32_Process where name = 'iexplore.exe'")
num = props.Count

if num <= 0 then WScript.Sleep(pause * 1000) 'schlaeft 60 * 1000 Tausendstel Sekunden
Loop while num <= 0

Do while num >= 1
WScript.Sleep(pause * 1000)
Set WshShell = WScript.CreateObject("WScript.Shell")
Set locator = CreateObject("WbemScripting.SWbemLocator")
Set service = locator.ConnectServer()
Set props = service.ExecQuery _
("select name, description from Win32_Process where name = 'iexplore.exe'")
num = props.Count

if num >= 1 then WshShell.Exec "PSKill -t iexplore.exe"

Loop

Es tut nun das was ich möchte. Allerdings beendet es sich sobald es den Internet Explorer gefunden und beendet hat.
Eigentlich soll es nach beenden des IEs wieder anfangen zu suchen ob der Prozess wieder da ist.

Und so ganz versteh ich nu nicht wie ich da sozusagen ein übergeordnetes Do...Loop baue ...
 
AW: VBSript zum prüfen und schließen einer Anwendung nach Zeit

Code:
pause = 10 'Pause in Sekunden, hier aendern...

Set shell = CreateObject("WScript.Shell")
Set locator = CreateObject("WbemScripting.SWbemLocator")
Set service = locator.ConnectServer()


Do  
    Set props = service.ExecQuery("select name from Win32_Process where name = 'iexplore.exe'")
    WScript.Sleep(pause * 1000) 'schlaeft 60 * 1000 Tausendstel Sekunden       
    
    If props.Count > 0 Then
        shell.Exec("PSKill -t iexplore.exe")
        WScript.Sleep(200) ' kurz warten bis IE geschlossen ist
    End If
Loop While True
 
AW: VBSript zum prüfen und schließen einer Anwendung nach Zeit

Guten Morgen,

vielen Lieben Dank an TessaKavanagh und lowskill ;)

Funktioniert nun ... *happy*

Greetz
 
Zurück