我正在构建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驱动程序并识别ANSIVT100转义序列,需要在C代码级执行什么操作?
发布于 2013-05-29 02:43:08
最新的Windows 10更新请阅读@brainslugs83的有用贡献,就在下面对此答案的评论中。
而对于Windows 10 Anniversary Update之前的版本
ANSI.SYS有一个限制,它只能在Windows95-Vista下的MS-DOS子系统的上下文中运行。
Microsoft KB101875解释了如何在命令窗口中启用ANSI.SYS,但它不适用于Windows NT。根据这篇文章:we all love colors,现代版本的视窗没有这个很好的ANSI支持。
相反,微软创建了很多函数,但这远远不是您需要操作ANSI/VT100转义序列的地方。
有关更详细的解释,请参阅Wikipedia article
ANSI.SYS还可以在NT派生的系统中运行,用于在NTVDM下执行的16位传统程序。
Win32控制台本身根本不支持ANSI转义序列。但是,诸如Ansicon之类的软件可以充当标准Win32控制台的包装器,并添加对ANSI转义序列的支持。
所以我认为Jason Hood的ANSICON是你的解决方案。它是用C编写的,支持32位和64位版本的Windows,以及the source is available。
我还发现了其他一些类似的问题或帖子,最终都是用ANSICON回答的:
发布于 2016-03-08 18:33:02
从Windows10 TH2 (v1511)开始,conhost.exe和cmd.exe开箱即可支持ANSI和VT100转义序列(尽管they have to be enabled。
有关更多详细信息,请参阅my answer over at superuser。
发布于 2016-06-13 15:04:45
从Windows10开始,您可以使用ENABLE_VIRTUAL_TERMINAL_PROCESSING启用ANSI转义序列:
https://msdn.microsoft.com/en-us/library/windows/desktop/mt638032(v=vs.85).aspx
https://stackoverflow.com/questions/16755142
复制相似问题