2009-10-07 98 views
8

this question類似,但在WPF應用程序中包裝的控制檯程序會生成彩色輸出,所以如果我可以捕獲顏色和文本,將會很好。將彩色控制檯輸出捕獲到WPF應用程序中

這是我的第一個WPF程序,我不知道如何去尋找/修改正確的控件,目前我只是使用一個TextBox,它只能捕獲純文本。

更新:我試着使用的RichTextBox:

richTextBox.Document.Blocks.Clear(); 
richTextBox.Document.Blocks.Add(new Paragraph(new Run(process.StandardOutput.ReadToEnd()))); 

唉,只顯示純文本。

+0

您能工作嗎?我目前正在嘗試做類似的事情,我嘗試了下面列出的答案,但無法看到數據流中出現的任何控制代碼? – 2011-03-15 19:44:12

+0

嗨,亞當,不,控制檯程序被另一個開發人員刪除,我不再維護它。 – si618 2011-03-15 23:59:55

+0

您是否嘗試過查看RichTextBox而不是TextBox? – viggity 2009-10-07 14:15:59

回答

13

如果我明白你想要做的是正確的,你想要屏幕上刮下一個在控制檯上運行的舊應用程序,並通過yourprocess.StandardOutput在WPF應用程序的控件中獲取控制檯輸出。

來自控制檯的顏色數據(和格式)將是ANSI。這將以重定向控制檯文本中的控制字符的形式顯示,它將顯示爲擴展ASCII字符和數字。您將需要一個ANSI解釋器控件將其轉換回顏色數據。我知道有幾個ANSI終端控件應該能夠很容易地進行調整 - Code Project上的this one能夠處理ANSI格式,但它是一個完整的ANSI終端,用於處理連接 - 您可能需要更換終端部分代碼可以顯示由yourprocess.StandarOutput.ReadToEnd()返回的字符串。

Here are the ANSI/VT100 control codes如果您想編寫自己的格式化程序,您將需要它。

+0

+1感謝您的關注,我們將對此進行調查。 FWIW,它實際上不是傳統應用程序,而是控制檯是執行數據庫安裝和升級的類庫的包裝。這只是解析一些棘手變量的簡單方法。我們使用控制檯作爲Wix DTF自定義操作的一部分進行安裝,而WPF項目使我們的開發人員可以輕鬆使用控制檯應用程序。 – si618 2009-10-09 04:03:48

相關問題