Surveillance de processus Windows avec Java [Résolu]

Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Dernière intervention
23 mai 2014
- - Dernière réponse : Hermios
Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Dernière intervention
23 mai 2014
- 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

Meilleure réponse
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Dernière intervention
9 mai 2010
3
Merci
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...

Merci dvoraky 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de dvoraky
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Dernière intervention
9 mai 2010
0
Merci
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
Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Dernière intervention
23 mai 2014
0
Merci
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
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Dernière intervention
9 mai 2010
0
Merci
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
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Dernière intervention
9 mai 2010
0
Merci
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
Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Dernière intervention
23 mai 2014
0
Merci
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
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Dernière intervention
9 mai 2010
0
Merci
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
Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Dernière intervention
23 mai 2014
0
Merci
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
Messages postés
265
Date d'inscription
dimanche 14 avril 2013
Dernière intervention
23 mai 2014
0
Merci
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.