我想製作一個程序來打開和關閉您在計算機上安裝的應用程序。從Java打開和關閉應用程序
我知道,使用
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"M:\\myfile.doc");
打開Word文檔myfile.doc
問題是使用此命令不能關閉,當你執行命令打開Word應用程序。
如何從java程序打開和關閉應用程序?
謝謝!
問候!
我想製作一個程序來打開和關閉您在計算機上安裝的應用程序。從Java打開和關閉應用程序
我知道,使用
Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+"M:\\myfile.doc");
打開Word文檔myfile.doc
問題是使用此命令不能關閉,當你執行命令打開Word應用程序。
如何從java程序打開和關閉應用程序?
謝謝!
問候!
你可以通過存儲Process
通過exec()
返回並呼籲它destroy()
嘗試,但因爲你是執行該啓動,然後不被JVM(只管理一個新的進程Windows命令,我不認爲它會工作JVM看到rundll32的東西)。
一個肯定會工作但不會跨平臺的解決方案(我不認爲你真的在意,因爲Word也不是跨平臺的:)是使用另一個windows shell命令來獲得你想要的像
taskkill /IM word.exe
你可以以同樣的方式像你一樣打開word執行它,用defaultRuntime.exec(...)
。如果打開了許多文字處理程序,並且想要殺死某個特定的文件處理程序,則必須解析任務列表以獲取正確的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();
也許這將解決你的問題閉幕。
不幸的是,並沒有真正殺死Word。它適用於我想的一般情況。如果直接調用Word(而不是通過shell),它甚至不起作用。 – 2010-12-02 15:40:42
太可惜了:(( – Luzik 2010-12-02 15:42:19