【问题标题】:Need an aclaration about the console buffer and console outputs需要关于控制台缓冲区和控制台输出的声明
【发布时间】:2013-10-17 07:14:06
【问题描述】:

当使用 API 技术使用“ReadConsoleOutput”函数在 .NET 中检索控制台缓冲区时,这意味着我可以在同一输出(缓冲区)中同时拥有标准输出、输入输出和错误输出吗?

或者换句话说:

如果我们通常需要启动一个进程并通过将 StandrdOutput/ErrorOutput/InputOutput 输出分成总共 3 个输出来重定向,那么如果我们使用一种技术来读取控制台缓冲区而不是重定向 3 个输出,我们可以拥有这 3 个输出到缓冲区流内的多合一输出?

我问了一个关于如何读取控制台缓冲区的问题(此处:How to read Console buffer in VBNET?),因为我想象缓冲区将包含所有“合并”在一起的输出,因此我可以检索所有标准输出或错误输出或输入输出到缓冲流,无需通过分隔重定向任何输出。

控制台缓冲区包含所有合并的输出(所有在控制台中写入的东西,无一例外)还是只有一个输出?

所以,我想知道我所说的是否错了。

更新:

如果我有这个不重定向任何输出的过程,也许是一个更好的例子:

Private Shared Process_Without_Redirect As New Process() With { _
.StartInfo = New ProcessStartInfo With { _
            .CreateNoWindow = True, _
            .UseShellExecute = False, _
            .RedirectStandardInput = False, _
            .RedirectStandardError = False, _
            .RedirectStandardOutput = False _
}}

...该进程是一个 CLI 进程,所以如果我使用一种技术来读取已启动进程的控制台缓冲区,我将能够从缓冲区中检索标准和错误输出吗?缓冲区将存储进程的所有输出?

启动的进程写入控制台的所有内容都将存储到缓冲区中吗?所以我可以检索写入多合一输出的缓冲区,而不是重定向和读取每个进程输出?

【问题讨论】:

    标签: c# .net vb.net console buffer


    【解决方案1】:

    您可以使用Console.SetOutConsole.Out 将缓冲区重定向到流。 那么你可以用它做任何你需要的事情。

    Console.SetOut Method

    Console.WriteLine("Hello World");
    FileStream fs = new FileStream("Test.txt", FileMode.Create);
    // First, save the standard output.
    TextWriter tmp = Console.Out;
    StreamWriter sw = new StreamWriter(fs);
    Console.SetOut(sw);
    Console.WriteLine("Hello file");
    Console.SetOut(tmp);
    Console.WriteLine("Hello World");
    sw.Close();
    

    另一个例子。如何将控制台输出重定向到文本框:

    How to redirect the Console’s output to a TextBox in C#

    【讨论】:

    • 谢谢,但这并不能解决我的问题,我有不清楚的地方,缓冲区将存储进程的所有 3 个输出?还是我需要像往常一样将它们一一输出重定向?
    • 我将重定向控制台窗口显示的所有输出!。如果您在输出中显示错误,它也会收集它们!
    • 对不起,但我认为这不是我想要的,我只是简单地问了一些问题,如果读取缓冲区与只读一个输出相同,或者缓冲区可以包含三个输出?缓冲区将存储 3 个输出,或者我需要分开读取,我的东西仍然不清楚,无论如何,对不起,代码示例没有向我显示三个输出是否存储在同一个输出(缓冲区)中的清晰信息,我是使用进程类,而不是控制台应用程序的控制台,在我的问题的最后几行中,我说我正在使用 GUI 应用程序。谢谢你
    猜你喜欢
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多