Bon j'ai pris le temps d'écrire un petit "watchdog" qui permet de surveiller qu'un programme tourne et le cas échéant le relancer.
Il faudra l'adapter au programme à surveiller, pour l'exemple j'ai pris le bloc-note de Windows qui sera mon processus à surveiller.
Il suffit à l'aide de Démarrer -> Panneau de configuration -> Tâches planifiées d'appeler "checkprocess.vbs"
Il est composé de trois fichiers :
- pslist.exe de sysinternals qui est un utilitaire permettant de sortir la liste des processus qui tournent
- checkprocess.vbs un script qui permet de lancer pslist et de le "piper" vers le fichier ci-dessous
- isrunning.vbs un script qui analyse ce qui est retourné par pslist et le cas échéant lance le programme.
checkprocess.vbs
' Déclaration de variables
Dim sPipe, sProcess
' nom du programme à surveiller
sProcess = "notepad"
' ligne à exécuter
sPipe = "cmd /c pslist " & sProcess & " | cscript /nologo isrunning.vbs " & sProcess
' exécute
Set oShell = CreateObject("WScript.Shell" )
oShell.Exec(sPipe) |
isrunning.vbs
' Déclaration de variables
Dim sLine, sProcess, iRunning
' nom du programme à surveiller
sProcess = WScript.Arguments(0)
' indique le nombre de fois que le programme tourne
iRunning = 0
' parcours le buffer entrant
While Not WScript.StdIn.AtEndOfStream
sLine = WScript.StdIn.ReadLine
' si le programme est trouvé ...
If (InStr(sLine, sProcess) > 0 AND InStr(sLine, "was not found" ) = 0) Then
' ... augmente le compteur
iRunning = iRunning + 1
End If
WEnd
' si le programme n'est pas lancé ...
If (iRunning < 1) Then
' ... le lance
Set oShell = CreateObject("WScript.Shell" )
oShell.Exec(sProcess)
End If |
Voila si le bloc-note est lancé rien ne se passe, si il n'est pas lancé il sera exécuté.
Pour télécharger les fichiers :
http://www.ploofer.com/checkprocess.zip
Note : qu'il faut que les fichiers soient sans le même répertoire