2

我想制作一个程序来打开和关闭您在计算机上安装的应用程序。

我知道使用

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

打开 Word 文档 myfile.doc

问题是使用此命令无法关闭执行命令时打开的 Word 应用程序。

如何从 Java 程序打开和关闭应用程序?

谢谢!

问候!

4

2 回答 2

5

您可以尝试存储Process返回的 byexec()并调用destroy()它,但我认为它不会起作用,因为您正在执行一个 windows 命令,该命令启动一个新进程,然后不受 JVM 管理(JVM 只能看到 rundll32 的东西)。

一个肯定会工作但不会跨平台的解决方案(我认为你并不关心,因为 Word 也不是跨平台的 :) 是使用另一个 windows shell 命令来获得你想要的,比如

taskkill /IM word.exe

您可以像打开 word 一样使用defaultRuntime.exec(...). 如果您打开了许多 word 进程并且想要杀死特定的一个,则必须解析任务列表以获得正确的 PID,然后尝试使用taskkill /PID XXXX.

于 2010-12-02T15:42:04.670 回答
1

我不是Java专家,但最近我接触到了你提到的功能。我记得, Runtime.getRuntime().exec() 返回一个 Process 类对象。

您可以尝试如下操作:

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

也许它会解决你的关闭问题。

于 2010-12-02T15:39:01.193 回答