繁体   English   中英

在现代 Windows 命令行上启用 ANSI 转义码处理? [C]

[英]Enabling ANSI escape code processing on the modern Windows command line? [C]

我听说现代 Windows 控制台支持ANSI 转义码(COLORS),但您必须启用它们。

使用 Windows 10 的 19042.746 版本,使用SetConsoleMode(consoleHandle, ENABLE_VIRTUAL_TERMINAL_PROCESSING); 启用它应该只是一件简单的事情; // 来自 windows.h ,但设置后,它仍然不支持 ANSI 转义 colors。我错过了什么?

现实生活中的例子

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleMode(hConsole, ENABLE_VIRTUAL_TERMINAL_PROCESSING);
printf("\033[32mThis is green");

打印出来

[31mThis is green

资料来源:

您还需要添加ENABLE_PROCESSED_OUTPUT 您需要先使用 GetConsoleMode 获取当前模式(它通常包含ENABLE_PROCESSED_OUTPUT ),然后将ENABLE_VIRTUAL_TERMINAL_PROCESSING添加到模式中:

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD mode = 0;
GetConsoleMode(hConsole, &mode); //
SetConsoleMode(hConsole, mode | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
printf("\033[32mThis is green");

结果:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM