2017-09-06 11 views
0

私は色を変更するためのコマンドのC#からConsole APIを使用して試してみるには、コンソールを使用するには、Node.jsのからConsole APIの違いを見つけています( `\ X1B [31メートル '):C#とNode.jsコンソール出力の違いは何ですか?

このNode.jsの使い方コード:

console.log("\x1B[31mTeste"); 

プリントこの: console with Teste in red


私はこのC#コードを使用:

をこの違いを持っ​​ているのはなぜ console with some chars and Teste in default color


Console.Write("\x1B[31mTeste"); 

私はこの出力を取得しますか?

+0

node.jsのように見えますが、エスケープシーケンス(つまり '\ x1B [31m')は処理されますが、他のコンソールは処理されません。なぜ、2番目のコンソール(Visual Studioのこれは?)がプログラムされているのかどうか尋ねていますか? –

+0

はい、私はx1B [31mはターミナルの色を変更するためのコードであることを知っています。なぜC#がこれで動作しないのか分かりません。 (私はこれをより明確にするために私の質問を編集します) – thur

+0

彼はAnsiConを使用しています..私はWindowsのデフォルトのcmdを使用しています – thur

答えて

2

ノードは、https://github.com/libuv/libuvを使用してANSIコンソールをエミュレートします。通常のWindowsコンソールはこれをサポートしていないため、C#から操作しようとするとうまくいきません。

+0

を使用Windows 10のコンソールは仮想端末シーケンスをサポートしていますが、WinAPIの 'GetConsoleMode'と' SetConsoleMode '。古いバージョンでは、ANSICONまたはConEmuを使用することができます。これはDLLインジェクションを使用して、 'WriteConsole'などのWinAPIコンソール機能をフックします。 – eryksun

関連する問題