首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让win32控制台识别ANSI/VT100转义序列?

如何让win32控制台识别ANSI/VT100转义序列?
EN

Stack Overflow用户
提问于 2013-05-26 08:25:31
回答 13查看 81.6K关注 0票数 73

我正在构建ncurses库的一个轻量级版本。到目前为止,它在兼容VT100的终端上工作得很好,但win32控制台无法将\033代码识别为转义序列的开始:

代码语言:javascript
复制
# 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代码级执行什么操作?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 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回答的:

票数 74
EN

Stack Overflow用户

发布于 2016-03-08 18:33:02

从Windows10 TH2 (v1511)开始,conhost.execmd.exe开箱即可支持ANSI和VT100转义序列(尽管they have to be enabled

有关更多详细信息,请参阅my answer over at superuser

票数 40
EN

Stack Overflow用户

发布于 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

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16755142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档