OVH Cloud OVH Cloud

Monitoring process

4 réponses
Avatar
Thierry
Bonjour,

J'ai une application qui est lancer par un exe, cet exe=20
lance utilise java.exe

Je dois monitorer le java.exe.
Aucun soucis si je le lance une seule fois, je sais=20
r=E9cup=E9rer son PID, mais si je le lance 2 fois =E7a se=20
complique puisqu'il me trouve forc=E9ment le premier, hors=20
je souhaiterai qu'il identifie le dernier ouvert ou le=20
plus r=E9cent.
Y a t'il une solution dans le :
Set colProcesses1 =3D objWMIService.ExecQuery ("SELECT *=20
FROM Win32_Process WHERE Name =3D 'java.exe'")
de sp=E9cifier comme dans SQL LAST ?
J'essaie de mon c=F4t=E9 et si j'ai des infos je les d=E9pose.

Amicalement,
Thierry

4 réponses

Avatar
Stéphane [MS]
Bonjour,

Cf. Script Center sur :
http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx

Par exemple :
====================================== strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set colMonitoredProcesses = objWMIService. _
ExecNotificationQuery("select * from __instancedeletionevent " _
& "within 1 where TargetInstance isa 'Win32_Process'")
i = 0

Do While i = 0
Set objLatestProcess = colMonitoredProcesses.NextEvent
Wscript.Echo objLatestProcess.TargetInstance.Name
Loop
=======================================
Cdlt
Stéphane

"Thierry" a écrit dans le message de
news: 7e8801c526e8$bddef1a0$
Bonjour,

J'ai une application qui est lancer par un exe, cet exe
lance utilise java.exe

Je dois monitorer le java.exe.
Aucun soucis si je le lance une seule fois, je sais
récupérer son PID, mais si je le lance 2 fois ça se
complique puisqu'il me trouve forcément le premier, hors
je souhaiterai qu'il identifie le dernier ouvert ou le
plus récent.
Y a t'il une solution dans le :
Set colProcesses1 = objWMIService.ExecQuery ("SELECT *
FROM Win32_Process WHERE Name = 'java.exe'")
de spécifier comme dans SQL LAST ?
J'essaie de mon côté et si j'ai des infos je les dépose.

Amicalement,
Thierry
Avatar
Thierry
Merci pour ta réponse, mais cela me donne l'info lors de
la fermeture du dernier process en date.

Je me suis ma expliqué:
J'ai un prog exe qui lorsqu'il se lance, demande un mot de
passe puis lance ensuite java.exe pour son interface.
Le prog exe continue de fonctionné, et je souhaite
récupérer le PID de java.exe au cas ou j'en ai deux.
Sachant qu'entre le lancement de java.exe après la saisie
du password, il peut y avoir 3 à 5 secondes, donc si la
personne lance autre chose, ben pas cool, donc j'essaie de
monitorer uniquement java.exe.

Amicalement
Thierry

-----Message d'origine-----
Bonjour,

Cf. Script Center sur :
http://www.microsoft.com/technet/scriptcenter/scripts/defa
ult.mspx


Par exemple :
======================== ===============
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer
& "rootcimv2")

Set colMonitoredProcesses = objWMIService. _
ExecNotificationQuery("select * from
__instancedeletionevent " _

& "within 1 where TargetInstance
isa 'Win32_Process'")

i = 0

Do While i = 0
Set objLatestProcess = colMonitoredProcesses.NextEvent
Wscript.Echo objLatestProcess.TargetInstance.Name
Loop
======================== ================

Cdlt
Stéphane

"Thierry" a écrit
dans le message de

news: 7e8801c526e8$bddef1a0$
Bonjour,

J'ai une application qui est lancer par un exe, cet exe
lance utilise java.exe

Je dois monitorer le java.exe.
Aucun soucis si je le lance une seule fois, je sais
récupérer son PID, mais si je le lance 2 fois ça se
complique puisqu'il me trouve forcément le premier, hors
je souhaiterai qu'il identifie le dernier ouvert ou le
plus récent.
Y a t'il une solution dans le :
Set colProcesses1 = objWMIService.ExecQuery ("SELECT *
FROM Win32_Process WHERE Name = 'java.exe'")
de spécifier comme dans SQL LAST ?
J'essaie de mon côté et si j'ai des infos je les dépose.

Amicalement,
Thierry


.



Avatar
Do Re Mi chel La Si Do
Bonsoir !


Les informations sur les processus, fournies par WMI, ont la propriété
.CommandLine

Si les différents lancements de java.exe contiennent un ou des paramètres
différents (même inutiles), tu pourrais utiliser cette propriété, pour
savoir de quelle instance il s'agit.

Dans le genre de paramètre de ligne de commande "inutile" qu'il est possible
d'ajouter : le nom d'utilisateur, ou l'heure.

Une autre propriété (peut-être) intéressante, c'est .ElapsedTime


@-salutations
--
Michel Claveau
Avatar
Thierry
Bonjour,

Lorsque j'utilise .ElapsedTime, il m'est retourné une
erreur, je suis en Win2k, et .ElapsedTime est utilisable à
priori à partir de XP et 2003 avec
WbemScripting.SWbemRefresher

Voici une copie de mon script qui pour l'instant est
rudimentaire:

strComputer = "."

i = 0

Set objWMIService = GetObject("winmgmts:" & strComputer
& "rootcimv2")

Set colItems1 = objWMIService.ExecQuery("Select * from
Win32_Process WHERE NAME='notepad.exe'")
For Each objItem in colItems1
i = i + 1
strProcessId = objItem.ProcessId
strResult = strResult & vbcrlf & "Process " & i & " : "
& strProcessId
strResult = strResult & vbcrlf & "Temps écoulé : " &
objItem.ElapsedTime
Next

strResult = "Nb Process : " & i & vbcrlf & strResult

If i > 0 Then
Set colItems2 = objWMIService.ExecQuery("Select * from
Win32_Process WHERE NAME='notepad.exe'")
For Each objItem in colItems2
strVal = objItem.ProcessId
If strVal > strValTmp Then strValMax = strVal Else
strValMax = strValTmp
strValTmp = strVal
Next

MsgBox strResult & vbcrlf & vbcrlf & "Le Process maxi
est : " & strValMax
End if

Mais je n'arrive toujours pas à savoir quel est le dernier
ouvert.

Amicalement,
Thierry
-----Message d'origine-----
Bonsoir !


Les informations sur les processus, fournies par WMI, ont
la propriété

..CommandLine

Si les différents lancements de java.exe contiennent un
ou des paramètres

différents (même inutiles), tu pourrais utiliser cette
propriété, pour

savoir de quelle instance il s'agit.

Dans le genre de paramètre de ligne de commande "inutile"
qu'il est possible

d'ajouter : le nom d'utilisateur, ou l'heure.

Une autre propriété (peut-être) intéressante,
c'est .ElapsedTime



@-salutations
--
Michel Claveau



.