Go Down

Topic: Ouvrir et fermer des applications avec Processing (Read 1 time) previous topic - next topic

Jean-François

Nov 21, 2010, 11:08 am Last Edit: Nov 21, 2010, 11:21 am by jfs Reason: 1
J'arrive à ouvrir plusieurs applications Processing avec ce code :

Quote

void setup() {
  size(200, 200);
}

void draw() {
  
  String[] params1 = {"/Volumes/appli_1.app" };
  open(params1);

 String[] params2 = {"/Volumes/appli_2.app" };
 open(params2);
  
}



Par contre pour les fermer c'est pas la joie... le seul truc qui marche, c'est ce code :

Quote

String[] params = { "killall","JavaApplicationStub" };
exec(params);



Malheureusement en procédant de cette façon, toutes les applications Processing sont arrêtées.
Et j'aimerais que l'application "Maitre" puisse subsister ( celle qui permet d'ouvrir et fermer les process et qui contrôle si les autres ne sont pas plantées).

J'aimerais également que cela fonctionne sous Mac, Windows et Linux (quitte à compiler trois méthodes différentes).

Est ce que quelqu'un aurait une solution ?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Jean-François

#1
Nov 21, 2010, 08:17 pm Last Edit: Nov 21, 2010, 09:04 pm by jfs Reason: 1
La piste que je privilégie est la ligne de commande.

En tapant 'jps' dans la console (toutes plateformes, c'est du Java Virtual Machine ;)), on sort les PID des processus Java en cours.

Par contre je n'ai pas trouvé comment avoir les nom des processus et comment les transmettre a l'application Processing.

Autrement la commande 'ps -l' me sort tout les processus en cours... donc ça fait beaucoup à trier.
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Jean-François

#2
Nov 21, 2010, 09:12 pm Last Edit: Nov 21, 2010, 09:14 pm by jfs Reason: 1
J'avance un peu.

Avec la ligne de commande :

Code: [Select]
ps ax | grep "JavaApplicationStub"


J'ai le PID et le path et le nom des applications Processing.

Maintenant il faut faire passer ces infos à l'appli Processing...
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Jean-François

Bon...

Avec cette ligne de commande:

Code: [Select]
ps ax | grep "JavaApplicationStub" > /Volumes/Test.txt

J'écris dans le fichier test les sorties de la console, je n'ai plus qu'à lire le contenu du fichier avec mon application pour connaitre le PID des autres applications Processing et les "killer".

Pour Mac ça devrait marcher.... maintenant, Windows et Linux... une idée ?  ;)
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

erlik

Pour linux, ça marche aussi. Un petit kill et au revoirs l'appli ...
Par contre, le chemin vers Test.txt n'est pas valable sous environnement GNU/Linux, mais peut etre remplacé par "${HOME}/Test.txt "

Jean-François

#5
Nov 21, 2010, 11:05 pm Last Edit: Nov 21, 2010, 11:07 pm by jfs Reason: 1
Merci pour l'info, ce fichier test.txt devrait se trouver sur une clé USB.

Pour l'instant je n'arrive pas à trouver la syntaxe qui permet d'écrire ce !@#$!@ de fichier "test"  ;D
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

erlik


Jean-François

#7
Nov 22, 2010, 12:15 pm Last Edit: Nov 22, 2010, 12:17 pm by jfs Reason: 1
Est ce que tu peux développer ?  :)


Autrement j'ai trouvé une librairie qui s'appelle "Napplet" qui permettrait de faire du multi-thread (avec setup et draw séparés), reste à voir si je peux arréter les processus par le code principal.
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Jean-François

#8
Nov 22, 2010, 08:19 pm Last Edit: Nov 22, 2010, 08:21 pm by jfs Reason: 1
J'ai une solution un peu barbare, je fais un shell dans un fichier executable.

Code: [Select]
#!/bin/bash
ps ax | grep "JavaApplicationStub" > /Volumes/Test.txt


Le seul problème qui subsiste c'est que j'ai une console qui s'ouvre à chaque appel et qui reste ouverte.
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Jean-François

En rajoutant ça a la fin du shell, le terminal se ferme :

Code: [Select]
osascript -e 'tell application "Terminal"
set nb to count of windows
if nb > 1 then close first window
if nb <= 1 then quit
end tell' &


Mais ça marche uniquement sur Mac.

Si quelqu'un peut me décrire comment lire le PID et l'écrire sur les autres plateformes ce sera le bienvenu.  ;)
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

UltraLord

Pour Windows, il y a les outils sysinternals :
Pour le PID, c'est PSList : http://www.microsoft.com/france/technet/sysinternals/ProcessesAndThreads/PsList.mspx
Pour tuer un processus, c'est PSKill : http://www.microsoft.com/france/technet/sysinternals/ProcessesAndThreads/PsKill.mspx

Pour contre, pour le monde Unix, la commande ne diffère pas de mac : ps ax | grep "JavaApplicationStub" > /Volumes/Test.txt
Il faut juste mettre à la place le chemin qui t'intéresse. Si tu montes ta clé USB dans /mnt/USBkey, ça donnera : ps ax | grep "JavaApplicationStub" > /mnt/USBkey/Test.txt

Jean-François

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Go Up