本文转自:https://blog.csdn.net/liang890319/article/details/73558116

1.在主界面添加调用外部exe程序的Button,双击此Button进入代码编辑页面。

在程序的开始using System.Diagnostics;

然后在初始化函数的上方定义private static System.Diagnostics.Process p;

2.在Button的双击事件中,添加如下代码:

 if (p == null)
            {
                p = new System.Diagnostics.Process();
                p.StartInfo.FileName = “应用程序名字.exe”;
                p.Start();
            }
            else
            {
                if (p.HasExited) //是否正在运行
                {
                    p.Start();
                }
            }
            p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
        }

3.若想关闭主程序的同时也关闭调用的程序,需要在退出程序的按钮事件中添加如下代码:

           Process[] pProcess;
            pProcess = Process.GetProcesses();
            for (int i = 1; i <= pProcess.Length – 1; i++)
            {
                if (pProcess[i].ProcessName == “应用程序名字”)   //任务管理器应用程序的名
                {
                    pProcess[i].Kill();
                    break;
                }
            }

    但是这里有个问题,点击Button调用外部exe程序后,若将外部exe程序最小化,此时再点击主界面的调用按钮时,exe程序不能显示在屏幕的最前端,只能手动从任务栏将其窗口正常化。一时不知如何解决,不过也无伤大雅

如果只是简单的调用外部的EXE程序文件,只需要下面一行代码就可以搞定。

                System.Diagnostics.Process.Start(Application.StartupPath + “你的应用程序.exe”);

如果是等待这个EXE程序执行完毕再执行下面的代码其实也是很简单的,只需要在后面使用WaitForExit()方法即可。

代码如下
System.Diagnostics.Process.Start(Application.StartupPath + “你的应用程序.exe”).WaitForExit();

//调用外部程序导cmd命令行
    Process p = new Process(); 
    p.StartInfo.FileName = “cmd.exe”; 
    p.StartInfo.UseShellExecute = false; 
    p.StartInfo.RedirectStandardInput = true; 
    p.StartInfo.RedirectStandardOutput = true; 
    p.StartInfo.CreateNoWindow = false; 
    p.Start(); 
    / /向cmd.exe输入command 
    p.StandardInput.WriteLine(“cd C:\\Inetpub\\wwwroot\\Paicdom\\PaWebService\\PaWeb\\Manage\\Exportcsv”);
    //cmd又调用了ociuldr.ex
    p.StandardInput.WriteLine(“ociuldr.exe”);
    p.StandardInput.WriteLine(“exit”); //需要有这句,不然程序会挂机
    //string output = p.StandardOutput.ReadToEnd(); 这句可以用来获取执行命令的输出结果