【发布时间】:2016-10-28 22:15:39
【问题描述】:
Windows 10 控制台主机 conhost.exe 具有 native support for ANSI escape sequences,旧版本没有。如何从批处理文件中检测是否存在控制台 ANSI 支持?
是否可以直接从批处理文件调用GetConsoleMode 或其他 Windows API 调用?
【问题讨论】:
-
调用Windows API需要PowerShell,但可以批量调用PowerShell。
-
@SomethingDark,你能推荐一些关于如何从 Powershell 调用 Windows API 的好资源吗?
-
老实说,有一次我需要这样做,我很幸运只需要移动和调整窗口大小,并且我设法找到了完全符合我需要的现有代码,但它是像这样:blogs.msdn.microsoft.com/mattbie/2010/02/23/…
-
@Mofi:这是旧的巧合代码策略,永远不会奏效。该功能可能会被向后移植到 Windows 8,因此现在您的代码无法在 Windows 8 上运行。还有SetConsoleMode,因此您不能盲目假设虚拟终端序列总是在 Windows 10 上解释。而且您真的不知道Windows v.Next 中对虚拟终端序列的调用是什么。
-
@Mofi:这是一个不幸的决定,因为现在未来的访问者将不再知道,使用
VER已被考虑,但被解雇了。使用VER会导致解决方案不够稳健,而且只是巧合。
标签: windows batch-file ansi-escape