gpt4 book ai didi

c# - 如何从控制台应用程序(如 Far)接收颜色输出?

转载 作者:行者123 更新时间:2023-11-30 16:04:01 24 4
gpt4 key购买 nike

我有一些代码:

cmdProcess = new Process();
var procStartInfo = new ProcessStartInfo( "cmd", "/k "C:\\Program Files (x86)\\Far Manager\\Far.exe"" );

procStartInfo.RedirectStandardOutput = true;
procStartInfo.RedirectStandardInput = true;
procStartInfo.UseShellExecute = false;

procStartInfo.CreateNoWindow = true;
cmdProcess.OutputDataReceived += ( s, e ) => {
callbackFn(e.Data + "\n");
};
cmdProcess.StartInfo = procStartInfo;

cmdProcess.Start();
cmdProcess.BeginOutputReadLine();

但是使用这段代码我只能启动进程并得到一些东西,但不是完全的,也不是颜色。我还尝试了 ReceiveConsoleOutput 函数,但我只收到空白缓冲区。使用 WinAPI 我只能启动控制台而不能启动其他任何东西 - 我不太了解。但我并不反对 WinAPI 示例,因为我认为我的问题可以用它来解决。如果有人能帮助我,我将不胜感激。

附言很抱歉英语不好。

最佳答案

你说的是两件不同的事情。 ConEmu 和原始控制台具有颜色支持,但这是通过 console buffer API 实现的(here 是一个完整的 C# 库)。控制台不仅支持着色,还支持光标和鼠标;但是,它们都与标准输出无关。

但是如果你想在标准输出中接收颜色信息,你可以使用 ANSI escape sequences ,这是终端通信的标准(也用于 ANSI graphics art ),也支持着色和光标定位,并且可以编码为字符流。

但是如果您调用的进程不转储 ANSI 序列,(cmd 不这样做)您将不会收到任何颜色信息。

关于c# - 如何从控制台应用程序(如 Far)接收颜色输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35845980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com