' ---------------------------------------------------------- ' Script VBS de terminaison d'application ' ' Syntaxe : ' kill ' Paramètre : ' : nom de l'exécutable de l'application à terminer, ' sans indiquer de chemin ' : nom de l'ordinateur. ' s'il est absent : machine locale ' Exemple : ' kill notepad.exe ' kill notepad.exe springfield ' ' JC BELLAMY © 2003 ' ---------------------------------------------------------- Const SW_SHOWNORMAL=1 Dim args,net,ProcessSet, Process Set net = Wscript.CreateObject("WScript.Network") Set args = Wscript.Arguments Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set shell = WScript.CreateObject("WScript.Shell") TestHost true If args.count=0 Then s= "Script VBS de terminaison d'application" & VBCRLF s=s & "JC BELLAMY © 2003" & VBCRLF s=s & "---------------------------------------" & VBCRLF s=s & "Syntaxe :" & VBCRLF s=s & " kill " & VBCRLF s=s & "Paramètre :" & VBCRLF s=s & " : nom de l'exécutable de l'application à terminer," & VBCRLF s=s & " sans indiquer de chemin" & VBCRLF s=s & " : nom de l'ordinateur." & VBCRLF s=s & " s'il est absent -> machine locale" & VBCRLF s=s & "Exemple :" & VBCRLF s=s & " kill notepad.exe" & VBCRLF s=s & " kill notepad.exe springfield" & VBCRLF Wscript.echo s Wscript.quit end if ProcessName=args(0) If args.count>1 Then Computer=args(1) Else Computer=Ucase(net.ComputerName) End If Set ProcessSet=GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).InstancesOf _ ("Win32_process") Trouve=false for each Process in ProcessSet If InStr(1,Process.Name, ProcessName, vbTextCompare)>0 Then Trouve=true result=Process.terminate(0) If result<>0 Then Wscript.echo "Erreur terminaison processus " & ProcessName & " code " & result Else Wscript.echo "Processus " & Process.Name & " correctement terminé sur " & Computer End if End If Next If not trouve Then wscript.echo "Processus " & ProcessName & " non trouvé" Wscript.quit '-------------------------------------------------------------------- 'Sous-programme de test du moteur 'Vu les sorties générées, c'est CSCRIPT (et non pas WSCRIPT) 'qui doit être utilisé de préférence Sub TestHost(force) dim rep strappli=lcase(Wscript.ScriptFullName) strFullName =lcase(WScript.FullName) i=InStr(1,strFullName,".exe",1) j=InStrRev(strFullName,"\",i,1) strCommand=Mid(strFullName,j+1,i-j-1) if strCommand<>"cscript" then If force then Init="Ce script doit être lancé avec CSCRIPT" Else Init="Il est préférable de lancer ce script avec CSCRIPT" End If rep=MsgBox(Init & VBCRLF & _ "Cela peut être rendu permanent avec la commande" & VBCRLF & _ "cscript //H:CScript //S /Nologo" & VBCRLF & _ "Voulez-vous que ce soit fait automatiquement?", _ vbYesNo + vbQuestion,strappli) if rep=vbYes then nomcmd="setscript.bat" Set ficcmd = fso.CreateTextFile(nomcmd) ficcmd.writeline "@echo off" ficcmd.writeline "cscript //H:CScript //S //Nologo" ficcmd.writeline "pause" params="" For i = 0 To nbargs-1 params=params & " " & args(i) next ficcmd.writeline chr(34) & strappli & chr(34) & params ficcmd.writeline "pause" ficcmd.close shell.Run nomcmd, SW_SHOWNORMAL,true force=true end if If force then WScript.Quit end if end sub '--------------------------------------------------------------------