2014-04-23 39 views
3

我已經嘗試了幾件事來隱藏新進程的窗口(在這種情況下,它只是用於測試的notepad.exe),但無論我嘗試什麼,它都無法正常工作。隱藏進程窗口,爲什麼它不工作?

我已經閱讀了很多帖子現在都說同樣的,所以爲什麼它不適合我?

我有一個控制檯應用程序應該啓動其他進程而不顯示他們的窗口。

我試圖讓我的控制檯應用程序啓動notepad.exe沒有窗口,但它不會工作。

ProcessStartInfo info = new ProcessStartInfo("path to notepad.exe"); 

info.RedirectStandardOutput = true; 
info.RedirectStandardError = true;         
info.CreateNoWindow = true; 
info.UseShellExecute = false;         

Process proc = Process.Start(info); 

我一直在使用各種設置進行info.WindowStyle和我試圖配置我的控制檯應用程序是一個Windows應用程序,但它並沒有真正無論我做什麼也試過,子進程總是打開窗口。

這是不允許從一個控制檯應用程序或這裏有什麼問題 - 任何人都可以在這個可能嗎?

我在Windows 7 X64的

+0

您是否試過'info.WindowStyle = ProcessWindowStyle.Hidden;'? – ChrFin

+0

是的,我做過了,但顯然在設置其他屬性時它不會產生預期的效果。不過,似乎格蘭特找到了解決方案。 – Aidal

回答

4

使用.NET 4.0以我的經驗,下面的作品時,我火了 「的cmd.exe」。

info.CreateNoWindow = true; 
info.UseShellExecute = false;         

它似乎不適用於「notepad.exe」。它也會與其他應用程序失敗,如「excel.exe」和「winword.exe」。

然而這工作,:

ProcessStartInfo info = new ProcessStartInfo("notepad.exe"); 

info.WindowStyle = ProcessWindowStyle.Hidden; 

Process proc = Process.Start(info); 

MSDN

窗口可以是可見還是隱藏。系統通過不繪製顯示一個隱藏的窗口。如果一個窗口被隱藏,它將被禁用。隱藏的窗口可以處理來自系統或其他窗口的消息,但不能處理來自用戶或顯示輸出的輸入。通常,應用程序可能會在定製窗口外觀時隱藏新窗口,然後使窗口樣式爲正常。要使用ProcessWindowStyle.Hidden,ProcessStartInfo.UseShellExecute屬性必須爲false

當我測試它時,我沒有設置UseShellExecute = false

+0

這個工程!當設置沒有屬性,但WindowStyle,那麼它似乎工作出於某種原因。謝謝格蘭特:) – Aidal

+0

沒問題!我正在做一些閱讀,試圖確定_why_它的工作原理,但目前爲止沒有運氣。 –