Surveillance de processus Windows avec Java [Résolu]

Hermios 265 Messages postés dimanche 14 avril 2013Date d'inscription 23 mai 2014 Dernière intervention - 6 nov. 2008 à 11:10 - Dernière réponse : Hermios 265 Messages postés dimanche 14 avril 2013Date d'inscription 23 mai 2014 Dernière intervention
- 7 nov. 2008 à 00:26
Salut à tous,
Je souhaiterai pouvoir, avec java, vérifier si un processus windows a été lancé ou non.Malgré mes recherches, la seule piste que j'ai est l'API WIN32, mais je ne sais pas du tout l'utiliser, et aucun des exemples proposés avec la doc ne m'aide. Quelqu'un a une idée? (Avec cette API ou une autre méthode, peu importe)

Merci beaucoup

@+. Hermios
Afficher la suite 

Votre réponse

9 réponses

dvoraky 744 Messages postés dimanche 1 avril 2007Date d'inscription 9 mai 2010 Dernière intervention - 6 nov. 2008 à 17:02
+3
Utile
T'inquiètes c'est tout simple.

D'abord tu vas lancer la commander, c'est un process :

Process p = Runtime.getRuntime.exec("tasklist");
// maintenant affichage du résultat
BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStreamReader());
String ligne;

while ((ligne = b.readLine()) != null ) {
   System.out.println(ligne);
}
// voilà ça t'affiche tous les processus qui sont lancés

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de dvoraky
dvoraky 744 Messages postés dimanche 1 avril 2007Date d'inscription 9 mai 2010 Dernière intervention - 6 nov. 2008 à 11:45
0
Utile
Salut,

Alors, je ne connais pas cette API, mais il me semble logique que tu regardes du côté de JNI (Java Native Interface)

http://www.hex.ro/wb/pages/projects/java-jni-tutorial.php

Jettes un oeil à ce lien, ça parle de PID... ça devrait pourvoir le faire je pense,

Bonne chance

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Commenter la réponse de dvoraky
Hermios 265 Messages postés dimanche 14 avril 2013Date d'inscription 23 mai 2014 Dernière intervention - 6 nov. 2008 à 12:30
0
Utile
Salut Dvoraky,
Tout d'abord, merci beaucoup de ta réponse rapide.
Malheureusement, ce n'est pas ce que je cherche : les process que je veux observer (et juste observer, sans avoir à y toucher) sont de tous types, et pas seulement (pas du tout en l'occurence!) des process java. Par exemple, je voudrai pouvoir voir si un serveur svn local a été lancé ou non (nom du process : svnserve.exe).
En gros, si j'ouvre le task manager de windows, je veux pouvoirrécupérer la liste de tous les éléments de l'onglet "Processus". Ou alors, à partir du nom d'un processus (donc svnserve.exe pour notre exemple, mais je souhaite un cas général), savoir s'il est lancé ou non.
Merci

@+. Hermios
Commenter la réponse de Hermios
dvoraky 744 Messages postés dimanche 1 avril 2007Date d'inscription 9 mai 2010 Dernière intervention - 6 nov. 2008 à 14:28
0
Utile
Re-salut,

T'as pas qu'à être sous windows aussi!!! Avec Linux, tu pourrais lancer une commande système et récupérer l'occurence de svnserve s'il existe...

Enfin bref, je sais pas trop, tu as jetté un oeil à la technologie JNI? Parce qu'il me semble pas que ça puisse regarder uniquement les process Java mais tous les process système...

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Commenter la réponse de dvoraky
dvoraky 744 Messages postés dimanche 1 avril 2007Date d'inscription 9 mai 2010 Dernière intervention - 6 nov. 2008 à 14:43
0
Utile
Est ce que tu veux faire un programme portable multi-plateforme? Ou uniquement sous windaube?

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Commenter la réponse de dvoraky
Hermios 265 Messages postés dimanche 14 avril 2013Date d'inscription 23 mai 2014 Dernière intervention - 6 nov. 2008 à 16:40
0
Utile
Oui, je sais, windows c'est pas bien, mais Linux, j'ai jamais compris comment ca marche(déjà que windows, chuis pas très doué!!!). Donc non, mon projet est uniquement sous windaube, pas de multi plateforme.
Pour JNI, j'ai regaré ton lien, mais il ne parle que process java (c'est même dans le titre!). Je vais voir plus avant, mais je préfère ne pas encore mettre réponse acceptée, car j'ai des doutes. Merci beaucoup de ton aide en tout cas.

@+. Hermios
Commenter la réponse de Hermios
dvoraky 744 Messages postés dimanche 1 avril 2007Date d'inscription 9 mai 2010 Dernière intervention - 6 nov. 2008 à 16:47
0
Utile
Bon alors si tu veux tu peux lancer une commande système windaube

Dans ta "ligne de commande" windows, tape "tasklist" et ça te récupère tous les processus lancés...
Je pense que si tu récupères le résultat de la commande tasklist dans ton programme Java, ensuite, il te suffit de chercher s'il y a svnserve et voilou

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Commenter la réponse de dvoraky
Hermios 265 Messages postés dimanche 14 avril 2013Date d'inscription 23 mai 2014 Dernière intervention - 6 nov. 2008 à 16:51
0
Utile
Hum, ca, ca me plait. Une dernière question (Promis après j'arrête!) : Comment je peux récupérer cette liste!!! Runtime.getruntime() renvoie un process, non? Merci

@+. Hermios
Commenter la réponse de Hermios
Hermios 265 Messages postés dimanche 14 avril 2013Date d'inscription 23 mai 2014 Dernière intervention - 7 nov. 2008 à 00:26
0
Utile
C'est exactement ce qu'il me fallait. Une petite correction :
p.getInputStream() (le reader était en trop). Merci beaucoup en tout
cas.

@+. Hermios
Commenter la réponse de Hermios

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.