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 :

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();
		}
	}
Qui retourne cette erreur et ne tue pas le processus :
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 :

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é */}
        }
	}
Résultat : 'tskill' n'est pas reconnu en tant que commande interne
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 ?