如何从exe获取返回值并重新启动它

时间:2011-04-20 09:30:00

标签: c# mfc

场景:我有一个MFC代码调用在C#中创建的exe(它是一个Windows窗体应用程序)

需要:我需要exe在关闭时返回一个值,并根据返回值重新启动相同的exe

psudocode

  int result = RunExe("exename", arguments)
  if(result == 1)
  {
     result =  RunExe("exename", arguments)
  }

我是否必须将if条件置于循环中?

请给我一些建议。 1.如何从exe返回一个值 2.如何收取退货价值 3.如何重启exe

4 个答案:

答案 0 :(得分:7)

您的C#EXE可以返回这样的int值:

[STAThread]
public static int Main() {
    return 5;
}

您的其他应用必须像其他人解释的那样处理返回值。

var proc = Process.Start("mycsharwinformapp.exe"):
proc.WaitForExit();

//If the code is 5 restart app!
if(proc.ExitCode==5) Process.Start("mycsharwinformapp.exe"): 

答案 1 :(得分:0)

您可以使用process.ExitCode并创建一个新EXE来控制exitvalue并在需要时启动原始EXE,或者如果信息超过整数,则将信息保存在磁盘上的文件中,以便您可以处理它来自父进程(您创建的新EXE)。

答案 2 :(得分:0)

像O.D写的那样,Process.ExitCode是你正在寻找的价值......

要启动该过程,您可以使用Process.Start(string_path_to_exe,string_args),它将返回表示已启动进程的Process对象...等待进程结束时使用该对象的WaitForExit()方法

请参阅Process Class @ MSDN

答案 3 :(得分:0)

以下方法应该可以解决问题;

private static int RunProcess(string processName, string arguments)
{
    Process process = new Process();
    process.StartInfo.FileName = processName;
    process.StartInfo.Arguments = arguments;
    process.Start();
    process.WaitForExit();
    return process.ExitCode;
}

然后这样称呼它;

int returnCode;
do
{
    returnCode = RunProcess("...", "...");
}
while (returnCode == 1);