如何从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 服务并删除其文件