从Java打开和关闭应用程序
我想制作一个程序来打开和关闭您在计算机上安装的应用程序 我知道使用从Java打开和关闭应用程序,java,file,pid,Java,File,Pid,我想制作一个程序来打开和关闭您在计算机上安装的应用程序 我知道使用 Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"M:\\myfile.doc"); 打开Word文档myfile.doc 问题是使用此命令无法关闭在执行该命令时打开的Word应用程序 如何从java程序打开和关闭应用程序 谢谢你 问候 我不是Java专家,但是最近我接触了您提到的函数。我记得,Runtime.getRuntime().ex
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"M:\\myfile.doc");
打开Word文档myfile.doc
问题是使用此命令无法关闭在执行该命令时打开的Word应用程序
如何从java程序打开和关闭应用程序
谢谢你
问候 我不是Java专家,但是最近我接触了您提到的函数。我记得,Runtime.getRuntime().exec()返回一个进程类对象 您可以尝试执行以下操作:
Process word = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"M:\\myfile.doc");
// some logic
word.destroy();
也许它可以解决您的关闭问题。您可以尝试存储由
exec()
返回的进程
,并对其调用destroy()
,但我认为它不起作用,因为您正在执行一个windows命令,该命令启动一个新进程,而该进程随后不由JVM管理(JVM只能看到rundll32)
一个肯定有效但不会跨平台的解决方案(我认为您实际上并不关心,因为Word也不是跨平台的:)是使用另一个windows shell命令来获得您想要的,如
taskkill /IM word.exe
您可以使用
defaultRuntime.exec(…)以与打开word相同的方式执行它
。如果您打开了许多word进程,并且想要杀死一个特定的进程,那么您必须解析任务列表以获得正确的PID,然后尝试使用taskkill/PID XXXX
,不幸的是,这实际上并没有杀死word。我想它适用于一般情况。如果您直接调用word,它甚至不起作用(不是通过shell)。我只是尝试了一下,它确实有效(在手动调用winword.exe
之后)。谢谢杰克·安·马克,我会试试的。