1. 程式人生 > >C#如何呼叫外部exe程式

C#如何呼叫外部exe程式

http://blog.csdn.net/cyamazing/article/details/52849106

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(); 這句可以用來獲取執行命令的輸出結果