2014-01-23 86 views
2

首先,我用Google搜索這個問題,唯一的答案,我似乎正在使用System.exit(0);這是不是我找得到。目前我正在打開一個程序使用的Java終止程序

Runtime runtime = Runtime.getRuntime(); 
runtime.exec("C:\\Program Files\\program folder\\program.exe"); 

這成功地打開了該程序。然而,關閉程序看起來像一個完全不同的水壺。由於權限和安全性,是否可以通過java關閉程序?這也可以使用運行時完成,或者這是更復雜的問題?我所看到的,一個窗戶唯一的解決辦法是使用

taskkill /IM program.exe 

但是我的問題是,如果我一開始就TASKKILL這個關閉程序馬上?還是會告訴程序開始啓動關機過程?

編輯:

我會建議,將啓動該程序將處理Access數據庫

回答

4

你得到一個過程回來時,你做的Runtime.exec。在該流程實例,有一種破壞方法:

http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html

Runtime runtime = Runtime.getRuntime(); 
Process p = runtime.exec("C:\\Program Files\\program folder\\program.exe"); 
p.destroy() 
+0

此方法的唯一問題是它立即殺死該進程。如果在更新過程中可能會導致程序損壞數據庫。有沒有辦法啓動一個程序開始關閉? –

+0

正常的數據庫將被保護免受這種失敗:)但我不知道有關Access。 – pveentjer

+0

是的,正常的數據庫是,但是我們使用的軟件損壞,如果它關閉不正確。這是一種皇室疼痛 –

1

你可以這樣做:

Process p2 = runtime.exec("c:\\windows\\system32\\taskkill /IM program.exe") 

它是一個標準的殺人不是一個有力的一個(即需要/ F),因此它只會通知程序它應該自發終止。

,我不能和你的程序試試,但我打開記事本輸入一些文字,保存前,我用這種方式來終止它與記事本問我,如果我想保存我的工作。

與/ f選項記事本被終止立即離開該文件未保存。

這與您在unix中kill vs和kill -9之間的差異相同。

注意,這將終止您過程的所有情況,否則你應該使用PID。

如果在信令你的程序將能夠符合並嘗試關閉打開的連接和終止,這將取決於程序本身。