Je voudrais savoir comment reduire le code suivant :
' Requete WMI pour obtenir la liste des process en cours
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & strComputer)
Set colProcessList = objWMIService.ExecQuery ("Select * from Win32_Process")
Affichage = "<center><b><u>Liste des processus</b></u><p>"
For Each Proc in colProcessList
If Proc.Name = "amqsvc.exe" Then AMQSVC=1
If Proc.Name = "amqzmuc0.exe" Then AMQZMUC0=1
If Proc.Name = "amqzxma0.exe" Then AMQZXMA0=1
If Proc.Name = "amqzfuma.exe" Then AMQZFUMA=1
If Proc.Name = "amqzlaa0.exe" Then AMQZLAA0=1
If Proc.Name = "amqzmgr0.exe" Then AMQZMGR0=1
If Proc.Name = "amqzmur0.exe" Then AMQZMUR0=1
If Proc.Name = "amqrrmfa.exe" Then AMQRRMFA=1
If Proc.Name = "amqzdmaa.exe" Then AMQZDMAA=1
If Proc.Name = "amqpcsea.exe" Then AMQPCSEA=1
If Proc.Name = "amqxssvn.exe" Then AMQXSSVN=1
If Proc.Name = "runmqchi.exe" Then RUNMQCHI=1
If Proc.Name = "runmqlsr.exe" Then RUNMQLSR=1
Next
If AMQSVC = 1 Then
Affichage = Affichage & "<font color=green>amqsvc.exe</font> <br>"
Else
Affichage = Affichage & "<font color=red>amqsvc.exe</font><br>"
End If
If AMQZMUC0 = 1 Then
Affichage = Affichage & "<font color=green>amqzmuc0.exe</font> <br>"
Else
Affichage = Affichage & "<font color=red>amqzmuc0.exe</font><br>"
End If
Et ainsi de suite pour tous les processus présent dans la boucle.
Aujourd’hui mon script marche mais n’est pas très esthétique et pas pratique en cas de rajout d’autre processus.
J’aimerais pouvoir les mettre dans une variable puis boucler dessus mais je sais pas comment faire.
Sa doit être surement très con mais je sèche là.
Merci de vos suggestion
Edité le 26/07/2007 à 11:23
function couleur (colProcessList as Variant, process as String) as String
For Each Proc in colProcessList
If Proc.Name = process Then
couleur = “green”
exit function
endif
Next
couleur = “red”
end function
Et pour le programme principal :
Affichage = Affichage & “<font color=” & couleur(colProcessList, “amqsvc.exe”) & ">amqsvc.exe "
Affichage = Affichage & “<font color=” & couleur(colProcessList, “amqsvc.exe”) & ">amqzmuc0.exe "
etc
Merci pour ta réponse mais finalement j’ai fait la chose suivante :
' Requete WMI pour obtenir la liste des process en cours
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & strComputer)
Set colProcessList = objWMIService.ExecQuery ("Select * from Win32_Process")
Affichage = "<center><b><u>Liste des processus</b></u><p>"
ListeProc="amqsvc.exe;amqzmuc0.exe;amqzxma0.exe;amqzfuma.exe;amqzlaa0.exe;amqzmgr0.exe;amqzmur0.exe;"
ListeProc=ListeProc & "amqrrmfa.exe;amqzdmaa.exe;amqpcsea.exe;amqxssvn.exe;runmqchi.exe;runmqlsr.exe"
TabList = Split(ListeProc , ";")
Redim TabList2(CInt(UBound(TabList)))
For Each Proc in colProcessList
For i=LBound(TabList) to UBound(TabList)
If Proc.Name = TabList(i) Then TabList2(i) = 1
Next
Next
For i=LBound(TabList) to UBound(TabList)
If TabList2(i) = 1 Then
Affichage = Affichage & "<font color=green>" & TabList(i) & "</font><br>"
Else
Affichage = Affichage & "<font color=red>" & TabList(i) & "</font><br>"
End If
Next
Et pour l’avenir, je n’ai plus que la chaine initiale à modifier.
For Each Proc in colProcessList
For i=LBound(TabList) to UBound(TabList)
If Proc.Name = TabList(i) Then TabList2(i) = “green” else TabList2(i) = “red”
Next
Next
For i=LBound(TabList) to UBound(TabList)
Affichage = Affichage & “” & TabList(i) & “ ”
Next