Bonjour,
J'essaye désespérément de trouver comment tuer un proccessus à partir de son PID depuis un autre programme en Java.
J'ai d'abord essayé cette fonction :
Qui retourne cette erreur et ne tue pas le processus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 static void tuerProcessus2(String id) { Process p = null; try { p = Runtime.getRuntime().exec( "tskill "+id ); //ou taskkill } catch (IOException e) { e.printStackTrace(); } }
Cannot run program "tskill": CreateProcess error=2, Le fichier spécifié est introuvable
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at Main.tuerProcessus2(Main.java:98)
Ensuite j'ai fait une fonction qui écrit un script .bat et l'execute :
Résultat : 'tskill' n'est pas reconnu en tant que commande interne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 static void tuerProcessus(String id) { ecrire("arret importeur.bat", "%systemroot%\\system32\\tskill "+id+"\npause"); if (Desktop.isDesktopSupported()) { // Si on est ici, c'est que le desktop est supporté. try { String nomFichier = ("arret importeur.bat"; // Le nom du fichier File fichier = new File(nomFichier); // Le fichier Desktop desk = Desktop.getDesktop(); // Le lanceur desk.open(fichier); // Lancer le fichier // Et voilà } catch (IOException ex) {/*Le fichier n'est pas trouvé */} } }
Et le processus n'est pas arrêté. Par contre si je double clique sur le fichier arret importeur.bat là ça arrête bien le processus, j'en déduit donc que c'est une sorte de protection
Avez vous une solution ?
Partager