Открывать и закрывать приложения из Java - PullRequest
2 голосов
/ 02 декабря 2010

Я хочу создать программу для открытия и закрытия приложений, установленных на вашем компьютере.

Я знаю, что с помощью

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

откройте документ Word myfile.doc

Проблема в том, что с помощью этой команды невозможно закрыть приложение Word, которое открывается при выполнении команды.

Как я могу открывать и закрывать приложения из Java-программы?

Спасибо!

С уважением!

Ответы [ 2 ]

5 голосов
/ 02 декабря 2010

Вы можете попытаться сохранить Process, возвращаемый exec() и вызвать destroy(), но я не думаю, что это сработает, так как вы выполняете команду windows, которая запускает новый процесс, который затем не управляется JVM (JVM видит только вещь rundll32).

Решение, которое наверняка будет работать, но не будет кроссплатформенным (я не думаю, что вас это действительно волнует, поскольку Word тоже не кроссплатформенный :) - это использовать другую команду оболочки Windows для получения того, что вы хотите как

taskkill /IM word.exe

Вы можете выполнить его так же, как и для открытия слова, с помощью defaultRuntime.exec(...). Если у вас открыто много текстовых процессов и вы хотите убить определенный, вам придется проанализировать список задач, чтобы получить правильный PID, а затем попытаться с помощью taskkill /PID XXXX.

1 голос
/ 02 декабря 2010

Я не эксперт по Java, однако недавно у меня был контакт с упомянутой Вами функцией.Насколько я помню, Runtime.getRuntime (). Exec () возвращает объект класса Process.

Вы можете попробовать сделать следующее:

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

Возможно, это решит проблему закрытия.

...