2009-10-07 20 views
8

this questionと似ていますが、WPFアプリケーションでラップされているコンソールプログラムでは色付きの出力が生成されるため、色とテキストをキャプチャできればいいです。色付きコンソールの出力をWPFアプリケーションに取り込む

これは私の最初のWPFプログラムであり、正しいコントロールを見つけたり変更したりする方法がわかりません。現在のところ、TextBoxを使用していますが、プレーンテキストのみをキャプチャしています。

更新:それはプレーンテキストのみを示したALAS

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

:私は、リッチテキストボックスを使用してみました。

+0

これを取得できましたか?私は現在、同様のことをやろうとしていますが、私は以下の答えを試しましたが、ストリームから出てくるデータの制御コードを見ることができませんでしたか? –

+0

こんにちはアダム、いいえ、コンソールプログラムは別の開発者によって削除され、私はもはやそれを維持しません。 – si618

+0

TextBoxではなくRichTextBoxを調べてみましたか? – viggity

答えて

13

あなたが正しくやりたいことを理解している場合は、コンソールで実行されるレガシーアプリケーションをスクラップして、コンソール出力をyourprocess.StandardOutput経由でWPFアプリのコントロールに表示します。

コンソールからの色データ(およびフォーマット)はANSIになります。これは、リダイレクトされたコンソールテキストに拡張ASCII文字と数字として表示される制御文字の形式で表示されます。そのデータをカラーデータに変換するには、ANSIインタープリタコントロールが必要です。私はいくつかのANSI端末コントロールが存在することを知っています。簡単に適応できるはずです - this oneはANSIフォーマットを扱うことができますが、ANSIターミナルは接続を処理するために設計されています。コードの一部はyourprocess.StandarOutput.ReadToEnd()によって返された文字列を表示することができます。

Here are the ANSI/VT100 control codes独自のフォーマッタを作成する必要がある場合に必要です。

+0

+1ありがとう、それを調べます。 FWIWは、実際にはレガシーアプリケーションではなく、コンソールはデータベースのインストールとアップグレードを実行するクラスライブラリのラッパーです。それは、ちょっとした変数を解析する簡単な方法です。私たちはインストール用のWix DTFカスタムアクションの一部としてコンソールを使用しています.WPFプロジェクトは開発者がコンソールアプリケーションを簡単に使用できるようにするためのものです。 – si618

関連する問題