J'ai mon application en Java qui invoque un navigateur [IE ou Firefox, etc.]...
La condition est que lorsque mon application Java se termine, je dois fermer toutes les pages Web [processus enfants] que j'ai ouvertes à partir de mon application dans IE/Firefox, etc...
J'utilise le code suivant.
Note : cmd contient "le chemin d'accès de l'exécutable du navigateur système et l'URL"
static ArrayList pro = new ArrayList();
String cmd=" ";
Process p = Runtime.getRuntime().exec(cmd);
pro.add(p);
Je maintiens une ArrayList statique pour ajouter tous les objets de processus.
Pour tuer le processus que j'ai invoqué, j'utilise le code suivant
Iterator iter = pro.iterator();
while(iter.hasNext()){
Process p = iter.next();
System.out.println("Maintenant en train de tuer "+p.toString());
p.destroy();
}
Ce code[p.destroy();] fonctionne bien pour Internet Explorer, mais ne fonctionne pas pour Firefox/Chrome...
Étant donné que Firefox s'exécute en tant que processus principal et que le processus que j'invoque devient son enfant :(...
Je dois utiliser une solution générique pour Windows et Linux..
Je peux même opter pour une correction de fichier C++ qui fait cela avec certains critères de recherche.. afin que je puisse exécuter cet exécutable à partir de mon code en utilisant
Runtime.getRuntime().exec("cmd exécutable");