2011-05-25 66 views
3

現在我有一個全屏獨佔模式的框架,它指揮整個屏幕。面板上有一個按鈕,用於啓動Windows本地計算器程序(僅用於測試目的)。這個過程是否可以在後臺完全啓動?現在我有這個:僅在後臺使用Java啓動進程

this.parent.setAlwaysOnTop(true); 
    try { 
    Process p = Runtime.getRuntime().exec("calc"); 
    } catch (IOException e1) { 
    ErrorDialog error = new ErrorDialog("Error handling your shell action"); 
    e1.printStackTrace(); 
    System.exit(0); 
    } 
    this.parent.setAlwaysOnTop(false); 

這是否做我所需要的,但並沒有使它漂亮。它首先「最小化」我的窗口,然後開始計算,然後重新最大化我的窗口。這一切都很快發生,但東西在各處閃爍。是否有可能使「calc」在後臺運行而不觸及我的主窗口並使其完全無縫?

+0

這是一個僅限Windows的應用程序嗎? – 2011-05-25 15:34:18

+0

我目前正在Windows環境中構建,但很可能會在UNIX或Linux環境中使用更多。不過,我希望它與兩者兼容。 – n0pe 2011-05-25 15:37:15

+0

Scratch,我剛剛被通知它只是Linux。 – n0pe 2011-05-25 15:38:25

回答

1

這在原理上是一個特定於窗口管理器的事情,至少在X系統上(如Linux和大多數其他具有GUI的Unix)。

某些窗口管理器始終在後臺啓動新程序,始終在前臺,甚至需要用戶用鼠標繪製窗口區域。其他人則尊重正在開始的計劃的意願。

因此,你可以看看你正在開始的程序的命令行選項,也許他們有一個像「開始最小化」或類似的選項。

如果您正在使用KDE(和KDE窗口管理器),你可以使用kstart --onbottom ...kstart --minimize ...開始你的計劃,這將對堆棧底部的窗口,或啓動它最小化。 (看看kstart選項,你也想用--window--windowclass來表示窗口。)

+0

這兩個很好的答案,因爲我認爲你已經解決了這個問題。我將很快在KDE,Gnome以及更多輕巧的窗口管理器上嘗試這一點。感謝您的幫助 – n0pe 2011-05-25 16:03:46

1

在Linux中測試它,也許它不閃爍。如果沒有多少人會在Windows中使用它,閃爍應該不是一個大問題。

我不認爲有一個Java特定的方式來處理這個問題,你正在啓動一個外部過程。它如何啓動取決於操作系統。