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