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

Posted

技术标签:

【中文标题】如何从exe获取返回值并重新启动它【英文标题】:how to get return value from exe and restart it 【发布时间】:2011-04-20 09:30:00 【问题描述】:

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

需要:我需要 exe 在关闭时返回一个值,并根据返回值再次启动同一个 exe

伪代码

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

我必须把 if 条件放在循环中吗?

请给我一些建议。 1.如何从exe返回值 2.如何收集返回值 3.如何重启exe

【问题讨论】:

【参考方案1】:

你的 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"): 

【讨论】:

【参考方案2】:

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

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);

【讨论】:

【参考方案3】:

您可以使用process.ExitCode 并创建一个新的 EXE,该 EXE 控制退出值并在需要时启动原始 EXE,或者如果信息大于整数,则将信息保存在磁盘上的文件中,以便您可以从父进程(您创建的新 EXE)。

【讨论】:

【参考方案4】:

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

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

见Process Class @ MSDN

【讨论】:

以上是关于如何从exe获取返回值并重新启动它的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重新启动的情况下卸载 Windows 服务并删除其文件

如何使用命令提示符重新启动服务?

使用 C++ 重新启动 explorer.exe

如何在 Windows 8.1 中结束 explorer.exe(每次我这样做都会重新启动)

从 SSH 重新启动 Dokku 应用程序的正确命令是啥?

在MSI安装期间重新启动Explorer.exe不起作用