2010-12-02 4 views
2

Je veux créer un programme pour ouvrir et fermer les applications que vous avez installées sur votre ordinateur.Ouvrir et fermer des applications à partir de Java

Je sais que l'utilisation

Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"M:\\myfile.doc"); 

ouvrir le document Word myfile.doc

Le problème utilise cette commande ne peut pas fermer l'application Word qui ouvre lorsque vous exécutez la commande. Comment puis-je ouvrir et fermer des applications à partir d'un programme java?

Merci!

Cordialement!

Répondre

5

Vous pouvez essayer en stockant l'Process retourné par exec() et appelant destroy() là-dessus mais je ne pense pas que cela fonctionnera puisque vous exécutez une commande de fenêtres qui lance un nouveau processus qui est alors pas géré par la machine virtuelle Java (seulement la chose rundll32 est vue par JVM).

Une solution qui fonctionnera à coup sûr, mais ne sera pas multi-plateforme (je ne pense pas que vous vous souciez vraiment puisque Word n'est pas multi-plateforme aussi :) est d'utiliser une autre commande de shell Windows pour obtenir ce que vous voulez , comme

taskkill /IM word.exe 

vous pouvez exécuter de la même manière comme vous le faites pour ouvrir mot, avec defaultRuntime.exec(...). Si vous avez de nombreux traitements de mots ouverts et que vous voulez en tuer un spécifique, vous devrez analyser la liste des tâches pour obtenir le PID correct, puis essayer avec taskkill /PID XXXX.

+0

Je viens de l'essayer, ça marche (après avoir appelé 'winword.exe' manuellement) –

+0

Merci Jack et Mark, je vais essayer. – Lobo

1

Je ne suis pas l'expert Java, mais récemment j'ai eu un contact avec la fonction mentionnée par vous. Si je me souviens bien, Runtime.getRuntime(). Exec() retourne un objet de classe Process.

Vous pouvez essayer de faire comme suit:

Process word = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"M:\\myfile.doc"); 
// some logic 
word.destroy(); 

Peut-être qu'il va résoudre votre problème de fermeture.

+0

Malheureusement, cela ne tue pas réellement Word. Cela fonctionne pour le cas général je suppose. Cela ne fonctionne même pas si vous appelez Word directement (pas via le shell). –

+0

Quel dommage: (( – Luzik

Questions connexes