RedirectStandardOutput に必要な ANSI コードがないのはなぜですか?
-
21-09-2019 - |
質問
OK、これは私がテストするために作成した簡単なコンソールアプリケーションです。 RedirectStandardOutput
の Process.StartInfo
.
foreach (c In [Enum].GetValues(GetType(ConsoleColor))
{
Console.ForegroundColor = c
Console.WriteLine("Test")
}
そして以下が申請結果です。
ご覧のとおり、コンソールでは色が美しく表示されます。
しかし、読んでみると、 StandardOutput.BaseStream
色情報もANSIコードも何もありません。
リダイレクトされたストリームのカラー情報を取得するにはどうすればよいですか?
解決
簡単に言うと、.NET によって提供されるストリームは Console
クラスは純粋に文字ベースであり、テキスト データのみを返します。
拡張カラー情報を取得するには、Win32 API を P/Invoke する必要があります。 読み取りコンソール出力. 。これは、とりわけ、次の配列を返します。 COLOR_INFO 各文字の色の属性を含む構造体。見てみるといいかもしれません ReadConsoleOutput pinvoke.net ページ 始めるために。
所属していません StackOverflow