我想将param传递给另一个也由c#开发的exe文件。 我知道如何从我的应用程序传递参数到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文件的响应返回。帮我修改代码。感谢
可能在解决方案之下可能会解决我的问题。我会测试它。 适当地创建Process对象时设置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
}
答案 0 :(得分:1)
一种可能的解决方案是使用RedirectStandardOutput并将结果存储在文件中:
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>
}
答案 1 :(得分:0)
简单的解决方案是老式的流程退出代码。
一旦进程终止,您就可以使用p.ExitCode
来捕获代码中的结果。
此外,demo.exe需要在退出前设置Environment.ExitCode
。
通常,0用于报告成功。
答案 2 :(得分:0)
如果只是int,你可以检查进程的ExitCode。 否则你可以使用WCF管道在进程之间进行通信
答案 3 :(得分:0)
main的返回值为'void',因此您无法返回任何项目。您可以使用标准输出作为流来传回信息。一种简单的方法是将XML流返回给调用程序,该程序很容易被解析。