C# 如何捕获EXE文件C返回的响应#

C# 如何捕获EXE文件C返回的响应#,c#,C#,我想将param传递给另一个exe文件,该文件也是由c#开发的。 我知道如何将参数从应用程序传递到exe文件。这样我就可以将param传递给exe文件 Process p= new Process(); p.StartInfo.FileName = "demo.exe"; p.StartInfo.Arguments = "param1 param2"; p.Start(); p.WaitForExit(); 现在demo.exe文件将完成一些工作并返回一些数据。我想在我这边捕获这些数据。因此,

我想将param传递给另一个exe文件,该文件也是由c#开发的。 我知道如何将参数从应用程序传递到exe文件。这样我就可以将param传递给exe文件

Process p= new Process();
p.StartInfo.FileName = "demo.exe";
p.StartInfo.Arguments = "param1 param2";
p.Start();
p.WaitForExit();
现在demo.exe文件将完成一些工作并返回一些数据。我想在我这边捕获这些数据。因此,请指导我在代码中修改的内容,以通过demo.exe文件捕获响应返回。帮我修改代码。谢谢

可能下面的解决方案可以解决我的问题。我将测试它。 创建流程对象时,请适当设置StartInfo:

var proc = new Process {
    StartInfo = new ProcessStartInfo {
        FileName = "program.exe",
        Arguments = "command line arguments to your executable",
        UseShellExecute = false,
        RedirectStandardOutput = true,
        CreateNoWindow = true
    }
};

then start the process and read from it:

proc.Start();
while (!proc.StandardOutput.EndOfStream) {
    string line = proc.StandardOutput.ReadLine();
    // do something with line
}

简单的解决方案是老式的进程退出代码

一旦进程终止,您可以使用
p.ExitCode
在代码中捕获结果

此外,demo.exe需要在退出之前设置
Environment.ExitCode


通常,0用于报告成功。

如果进程的ExitCode仅为int,则可以检查它。
否则,您可以使用WCF管道在进程之间进行通信

main的返回值为“void”,因此您不能返回任何项目。您可以使用标准输出,这是一个流来传回信息。一种简单的方法是将XML流返回给调用程序,该程序很容易解析。

一种可能的解决方案是使用结果并将其存储在文件中:

using(Process proc = new Process())
{
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.FileName = <your exe>;
    proc.StartInfo.Arguments = <your parameters>;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.OutputDataReceived += LogOutputHandler;
    proc.Start();
    proc.BeginOutputReadLine();
    proc.WaitForExit();
}

private static void LogOutputHandler(object proc, DataReceivedEventArgs outLine)
{
    <write your result to a file here>
}
使用(Process proc=new Process())
{
proc.StartInfo.UseShellExecute=false;
proc.StartInfo.FileName=;
proc.StartInfo.Arguments=;
proc.StartInfo.RedirectStandardOutput=true;
proc.OutputDataReceived+=LogOutputHandler;
proc.Start();
进程BeginOutputReadLine();
进程WaitForExit();
}
私有静态void LogOutputHandler(对象进程、DataReceivedEventArgs大纲)
{
}

可能重复使用
进程.ExitCode
:假设demo.exe将返回我要从应用程序中捕获的字符串值。请指导我需要编写什么代码?可以使用许多不同的解决方案。。。简单:您可以将结果输出到文件,并在其他项目中读取它。不那么容易:您可以像@Benohow所提到的那样使用WCF进行跨进程通信,以从exe文件返回值,该文件将从我的应用程序中调用。假设我要调用demo.exe文件。所以我需要写什么,或者如何从演示应用程序返回值,这样我的主应用程序就可以读取该值。请指导我如何返回数据。谢谢