【问题标题】:Enabling ANSI escape code processing on the modern Windows command line? [C]在现代 Windows 命令行上启用 ANSI 转义码处理? [C]
【发布时间】:2021-04-19 21:17:54
【问题描述】:

我听说现代 Windows 控制台支持 ANSI escape codes(颜色),但您必须启用它们。

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

现实生活中的例子

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

打印出来

[31mThis is green

来源:

【问题讨论】:

标签: c winapi windows-console


【解决方案1】:

您还需要添加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");

结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    相关资源
    最近更新 更多