2014-10-29 38 views
0

我一直在考慮在Windows實現的cmd中給出一個新的外觀,並使其成爲WinForm(C#.net4.0或更高版本或最新的mono#分發版) 。 現在,我打算做的事情是:C# - 在不顯示它的背景下使用控制檯

  • 只顯示幾乎被輸入到它告訴CMD做什麼形式,沒有控制檯可見的(即使是在任務欄)

  • 捕捉控制檯輸出,並使用形式,使用戶交互

我認爲某種「迴歸」的事情,就像一個DLL會做的,但我沒有在一個項目中一起使用控制檯和窗體,所以我的問題是: 如何不顯示控制檯窗口,但將命令寫入它的行並使用WinForms應用程序接收輸出?

在此先感謝。

- EDIT 我應該補充一點,我的主要問題是鍵入捕獲控制檯輸出,並且在它不可見並且因此不可聚焦時鍵入。

+0

您可以通過**靜音模式**在後臺運行批處理文件(控制檯窗口不會顯示)。檢查[this](http://stackoverflow.com/questions/411247/running-a-cmd-or-bat-in-silent-mode)問題 – Gowtham 2014-10-29 14:22:37

回答

2

除了簡單地抑制控制檯窗口的外觀之外,您可能會遇到困難。但就特定要求而言,這並不難。

您將使用System.Diagnostics.Process類來啓動該過程。在開始這個過程之前,您需要將ProcessStartInfo.CreateNoWindow屬性設置爲true。請注意,您還需要將ProcessStartInfo.UseShellExecute設置爲false,否則CreateNoWindow屬性將被忽略。

至於更廣泛的問題:您似乎可能需要使用「cmd.exe/k」啓動控制檯進程,以便在完成之前實例化新的命令行解釋器進程,而不會退出。然後,您還需要使用Process類中的重定向功能從stdout和stderr中讀取數據,並寫入stdin。