WindowsNT 
以降の32Bitの
Windows 
ではいわゆるDOS窓、すなわち
コマンドプロンプト 
では、
エスケープシーケンス 
【G 】をサポートしていませんね。
身近で(学生さんが)Cの
プログラム 
でシェル(DOS窓 )場の
文字 
をエスケープシーケンスで色を変えたいんですけど・・という相談がありました。いろいろ
情報 
もあるのですが、大事な部分が抜けています。
Windows側では、
16ビット 
のプログラムを起動する前には必ず仮想DOS 上の
ドライバー 
等の
組み込み 
を行う仕組みなんですがこれが、
1.DOSプログラムの場合 -> C:¥SysemRoot¥System32¥CONFIG.NT |C#V| AUTOEXEC.NT
2.Windowsプログラムは -> C:¥SysemRoot¥System32¥CONFIG.WOW |C#V| AUTOEXEC.NT
となります。
ですから、DOSプログラムを処理する場合には、CONFIG.NT にはNECの
PC9801 
と違って、ansi.sysを組み込んでやる必要があります。
ファイル 
の最後の方に・・
device=%SystemRoot%¥system32¥
ANSI 
.SYS
dosonly
を入れましょう。
ここからが大事なんですが、16ビットのDOSプログラムを起動すると自動的に認識してくれますが、C
コンパイラ 
が32
ビット 
の場合には、DOS窓(command.com)ではなくて、CMD.EXE が起動されるでしょう。
したがって、
明示的 
に
COMMAND.COM 
を起動した方が確実です。
このDOS窓から、
コマンドライン 
でプログラムを起動するとエスケープシーケンスが効いているはずです。ためしに次の
コマンド 
を
入力 
して
見て 
ください。
PROMPT=[$p]% $e[33m
DIR
これで、プロンプトの色等が変化していればOKです。
注意 
ですが、command.com は16ビット用ですから
通常 
の終了をするとかなりWindowsのほうで処理を考え込んでしまいます。笑
これを終了するときにもコマンドライン上から、
EXIT 
で抜けてください。ここが肝心です。:P
スポンサードリンク