如何从C#启动外部可执行文件并在进程结束时获取退出代码

18

可能是重复问题:
如何在C#中启动进程?

我想启动一个命令行下运行的外部可执行文件来执行一些任务。 它完成后,我想检查它返回的错误代码。 我应该如何做?


5
@John,这不是重复的问题,因为另一个问题没有询问退出代码,也没有任何答案展示如何检索它。 - Ben Voigt
2
毋庸置疑,关于应用程序的启动已经被反复讨论过了,但对返回值的捕获却没有被频繁提及。我不会将这归类为“明显的重复”。 - Brad Bruce
1
@Brad:原始问题标题是“启动外部可执行文件的问题”。退出代码是其中最微不足道的部分。 - John Saunders
你是7k用户。你必须知道如何使用搜索(和谷歌),真的。 - abatishchev
2
我真的不明白这里需要关闭的原因 - 这个问题是从命令行操作中获取返回代码的顶级谷歌搜索结果之一。虽然这可能是“琐碎”的,但在提问时该问题尚未得到回答,显然对其他用户有所帮助。 - Kelly Robins
4个回答

23

试一下这个:

    public virtual bool Install(string InstallApp, string InstallArgs)
    {
        System.Diagnostics.Process installProcess = new System.Diagnostics.Process();
        //settings up parameters for the install process
        installProcess.StartInfo.FileName = InstallApp;
        installProcess.StartInfo.Arguments = InstallArgs;

        installProcess.Start();

        installProcess.WaitForExit();
        // Check for sucessful completion
        return (installProcess.ExitCode == 0) ? true : false;
    }

7
你知道 «布尔表达式» ? true : false«布尔表达式» 是等价的吗?(注:原文即为中文) - binki

13
        Process process = new Process();
        process.StartInfo.FileName = "[program name here]";
        process.StartInfo.Arguments = "[arguments here]";
        process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
        process.Start();
        process.WaitForExit();
        int code = process.ExitCode;

1

您可以使用Process.Start()方法。

根据您的需求,启动处理程序有实例和静态方法可供选择。

您可以在这里查看MSDN文档。它将描述您需要从C#启动外部进程并进行操作和监视的所有内容。


0

你可以使用 Process 类的 Start 静态方法。例如,要将 Internet Explorer 最小化,并使其转到 www.example.com:

ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe", "www.example.com");
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
Process.Start(startInfo);

关于返回值,如果操作成功,该方法将返回true,否则将引发Win32Exception异常。您可以检查该类的NativeErrorCode成员以获取与该特定错误相关联的Win32错误代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接