windows - 進数 - コントロールシーケンス




Win32コンソールでANSI/VT100エスケープシーケンスを認識させる方法 (6)

Ansi.sys(system32フォルダ内)は、Windows XP、2000、および以前のバージョンのNTの一部として提供される「MSDOSドライバ」です。 2000年とXPでは、それはsystem32フォルダにあります(私は以前のバージョンのNTの構造を覚えていません)。 DOSサブシステムで実行され、標準出力を使用するプログラムは、MSDOS上で実行できるようにANSI.SYSを使用できます。

ansi.sysをロードするには、MSDOSと同じように、device =またはdevicehigh =コマンドをconfigで使用する必要があります。 Windows NT 5(2K&XP)では、DOSサブシステムの各コピーに、pif / shortcut(別名「advanced」ボタンを使用)で別の設定ファイルを与えることができ、CONFIG.NTというデフォルトファイルがありますこれは、pif / shortcutに特別な設定ファイルが指定されていない場合に使用されます。

ansi.sysが正しくロードされると、mem / dはロードされたことを報告します。 以前のバージョンのNTでは、ansi.sysをロードするために適切なDOS環境をロードする必要があり、ロードする必要があります。アンシartはプロンプトで動作します。 Win 2KとXPでは、CMDはDOSプログラムではないため、ansi.sysの読み込みは「CMDプロンプト」に影響しません。これは、32ビットのWindowsコンソールプログラムです。 何らかの理由でWinXPで "command.com / p"を使ってcommand.comの固定コピーを読み込んだとしても、コマンドプロンプトがansiを有効にすることはできません。 command.comの読み込みをエミュレートしますか?

いずれにしても、実際のDOS版のcommand.comを使用すると、ansi ロードされた後に有効になります。このようなansi artを使用していることを示すことができます。

command /c type ansiart.ans

(ここに例があります: http://artscene.textfiles.com/ansi/artwork/beastie.ans : http://artscene.textfiles.com/ansi/artwork/beastie.ans

CONFIG.NT(system32フォルダー内)には、デバイス・ドライバーをロードするための構文の例が含まれています。 そのデフォルトファイルを編集するには、管理者である必要があります。また、そのファイルのコピーを作成することもできます。

Win 2KとXPでは、MSDOSのデフォルトの「ショートカット」は.LNKファイルではなく.PIFファイルです。 .lnkファイルをCMDに作成すると、特別な設定ファイルや自動実行ファイルを設定できなくなり、デフォルトのCONFIG.NTが使用されます。 1つのDOSアプリケーションに対して特別な設定ファイルを使用する場合は、「MSDOSショートカット」のコピーを作成するか、Windowsフォルダにある「_default.pif」のコピーを作成することができます。

私はncursesライブラリの軽量バージョンを構築しています。 これまでのところ、VT100互換端末ではうまく動作しますが、win32コンソールは\033コードをエスケープシーケンスの先頭として認識できません:

# include <stdio.h>
# include "term.h"

int main(void) {
  puts(BOLD COLOR(FG, RED) "Bold text" NOT_BOLD " is cool!" CLEAR);
  return 0;
}

ANSI.SYSドライバがロードされ、ANSI / VT100のエスケープシーケンスが認識されるためには、Cコードレベルで何を行う必要がありますか?



[更新] Windows 10周年更新前:

ANSI.SYSには、Windows 95-VistaではMS-DOSサブシステムのコンテキストでのみ実行できるという制限があります。

Microsoft KB101875では、コマンドウィンドウでANSI.SYSを有効にする方法について説明していますが、Windows NTには適用されません 。 記事によると: 我々はすべての色を愛し 、Windowsの現代版は、この素晴らしいANSIサポートを持っていない。

代わりに、マイクロソフトでは多くの機能を作成しましたが、ANSI / VT100エスケープシーケンスを操作する必要はありません。

詳細な説明については、 Wikipediaの記事を参照してください

ANSI.SYSはNTVDMで実行される16ビットレガシプログラムのNT由来システムでも機能します。

Win32コンソールはANSIエスケープシーケンスをネイティブにサポートしていません。 Ansiconなどのソフトウェアは、標準のWin32コンソールのラッパーとして機能し、ANSIエスケープシーケンスのサポートを追加できます。

だから、ジェイソン・フッドのANSICONはあなたのソリューションだと思います。 これはCで書かれており、32ビット版と64ビット版のWindowsをサポートしておりAnsicon

また、ANSICONを使用するために最終的に回答された他の同様の質問または投稿を見つけました。



たぶん、 AnsiconAnsiconを助けることができます

あなたの窓に応じてファイルをダウンロードして抽出するだけです:32bitまたは64bit

インストール先: ansicon -i






ansi-escape