C# 如何捕获EXE文件C返回的响应#
我想将param传递给另一个exe文件,该文件也是由c#开发的。 我知道如何将参数从应用程序传递到exe文件。这样我就可以将param传递给exe文件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文件将完成一些工作并返回一些数据。我想在我这边捕获这些数据。因此,
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文件。所以我需要写什么,或者如何从演示应用程序返回值,这样我的主应用程序就可以读取该值。请指导我如何返回数据。谢谢