2010-12-02 38 views
2

我想製作一個程序來打開和關閉您在計算機上安裝的應用程序。從Java打開和關閉應用程序

我知道,使用

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

打開Word文檔myfile.doc

問題是使用此命令不能關閉,當你執行命令打開Word應用程序。

如何從java程序打開和關閉應用程序?

謝謝!

問候!

回答

5

你可以通過存儲Process通過exec()返回並呼籲它destroy()嘗試,但因爲你是執行該啓動,然後不被JVM(只管理一個新的進程Windows命令,我不認爲它會工作JVM看到rundll32的東西)。

一個肯定會工作但不會跨平臺的解決方案(我不認爲你真的在意,因爲Word也不是跨平臺的:)是使用另一個windows shell命令來獲得你想要的像

taskkill /IM word.exe 

你可以以同樣的方式像你一樣打開word執行它,用defaultRuntime.exec(...)。如果打開了許多文字處理程序,並且想要殺死某個特定的文件處理程序,則必須解析任務列表以獲取正確的PID,然後嘗試使用taskkill /PID XXXX

1

我不是Java專家,但是最近我接觸過你提到的函數。我記得,Runtime.getRuntime()。exec()返回一個Process類對象。

你可以嘗試做如下:

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

也許這將解決你的問題閉幕。

+0

不幸的是,並沒有真正殺死Word。它適用於我想的一般情況。如果直接調用Word(而不是通過shell),它甚至不起作用。 – 2010-12-02 15:40:42

+0

太可惜了:(( – Luzik 2010-12-02 15:42:19

相關問題