我想制作一个程序来打开和关闭您在计算机上安装的应用程序。
我知道使用
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"M:\\myfile.doc");
打开 Word 文档 myfile.doc
问题是使用此命令无法关闭执行命令时打开的 Word 应用程序。
如何从 Java 程序打开和关闭应用程序?
谢谢!
问候!
您可以尝试存储Process
返回的 byexec()
并调用destroy()
它,但我认为它不会起作用,因为您正在执行一个 windows 命令,该命令启动一个新进程,然后不受 JVM 管理(JVM 只能看到 rundll32 的东西)。
一个肯定会工作但不会跨平台的解决方案(我认为你并不关心,因为 Word 也不是跨平台的 :) 是使用另一个 windows shell 命令来获得你想要的,比如
taskkill /IM word.exe
您可以像打开 word 一样使用defaultRuntime.exec(...)
. 如果您打开了许多 word 进程并且想要杀死特定的一个,则必须解析任务列表以获得正确的 PID,然后尝试使用taskkill /PID XXXX
.
我不是Java专家,但最近我接触到了你提到的功能。我记得, Runtime.getRuntime().exec() 返回一个 Process 类对象。
您可以尝试如下操作:
Process word = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"M:\\myfile.doc");
// some logic
word.destroy();
也许它会解决你的关闭问题。