c#如何将stdout重定向到新的进程窗口?

c#如何将stdout重定向到新的进程窗口?,c#,windows,C#,Windows,我正在使用调用创建一个进程: 进程启动(startInfo) 与 当进程使用这些参数运行时,它将输出到新进程的窗口 但是,当我在不重定向标准输出的情况下使UseShellExecute为false时,该过程将不再打印到屏幕上。这是预期的行为吗 如果是这样,如何向进程启动的新窗口写入 我可以使用StandardOutput.Read()从进程中手动获取数据,但我不知道如何将其写入新窗口。当我创建该窗口时,默认情况下它似乎有一个控制台 我可以使用pNoCKE调用新进程上的C++函数: [DllImp

我正在使用调用创建一个进程:

进程启动(startInfo)

当进程使用这些参数运行时,它将输出到新进程的窗口

但是,当我在不重定向标准输出的情况下使UseShellExecute为false时,该过程将不再打印到屏幕上。这是预期的行为吗

如果是这样,如何向进程启动的新窗口写入

我可以使用StandardOutput.Read()从进程中手动获取数据,但我不知道如何将其写入新窗口。当我创建该窗口时,默认情况下它似乎有一个控制台

我可以使用pNoCKE调用新进程上的C++函数:

[DllImport("kernel32", SetLastError = true)]
        private static extern bool AttachConsole(int dwProcessId);
我想我可以使用函数“writeconsole”直接写入新窗口的控制台

但是,我想知道是否可以使用.net库来实现这一点。我觉得我想要的并不是那么复杂,这应该是必要的

我所希望的是能够启动一个新进程,并将该进程的stdout重定向到该进程中创建的新窗口,同时保留写入stdin的能力

编辑:
使用console.writeline写入只会写入程序的主控制台。我的应用程序是一个gui应用程序,所以说实话,我不知道它到底写到哪里,但我知道你可以在visual studio的“输出”选项卡下看到这个输出,但不能在程序本身的窗口中看到。我认为.net为控制台分配了一个单独的缓冲区

您可以使用重定向
stdout
stdin

例如:

freopen ("file.txt","w", stdout); //or stdin
编辑:
您还可以使用
createpipe()
并从管道末端读取。然后,您可以告诉管道您希望将数据读取到的位置或存储/显示的位置。如果这不是您想要的,请在评论中详细说明。

好吧,我真的不想写file.txt。我想写入为承载新进程而创建的窗口。我在屏幕上的一个新窗口中使用此结果创建流程,我希望将新流程的输出重定向到该窗口。如果添加以下内容,该怎么办:
process.StartInfo.RedirectStandardOutput=true
process.OutputDataReceived+=(发送方,args)=>Console.WriteLine(args.Data)
process.BeginOutputReadLine()所以,您拥有启动console one的GUI应用程序。您成功地读取了输出,但不知道如何在窗口中显示它,对吗?你有没有试着在你的窗口中添加一个文本框并把文本放在那里?这听起来也是可能的,尽管我使用了不同的方法?在GUI应用程序中,您必须有一个要将文本放置到其中的控件<代码>文本框
在这里是一个明显的选择。你用什么?你能从一开始就描述你的问题,而不是你试图解决它的步骤吗?
freopen ("file.txt","w", stdout); //or stdin