C#操作exe應用程序

首先,操作和調用並不一樣,在我看來,調用也許就是直接運行這個exe文件,而我所說的操作就類似於在cmd裏面用命令行的方式來獲得信息交互。這次,我們需要使用C#代碼語言的方式來動態操作exe應用程序。雖然聽起來可能很高大尚,但是實質上主要就兩種操作,一個是向命令行寫入數據的操作,另一個則是讀取命令行的結果的操作。
話不多說,直接上代碼吧:

public static String ExecProc(string TableID, string exeFilePath, Process process1, ProcessStartInfo startInfo)
        {
            if (TableID != null)
            {
                startInfo.FileName = exeFilePath;//執行exe文件
                //startInfo.Arguments = TableID;//參數
                startInfo.RedirectStandardInput = true;
                startInfo.RedirectStandardOutput = true;
                //startInfo.CreateNoWindow = true; //不創建窗口  
                //startInfo.UseShellExecute = false;// 不使用系統外殼程序啓動
                process1.StartInfo = startInfo;
            }
            process1.Start();
            process1.StandardInput.WriteLine(TableID);
            string txt = process1.StandardOutput.ReadLine();
            //process1.Close();
            //process1.Kill();
            return txt;
        }
  • Arguments 這個參數是指在進入程序前輸入的參數,如果想程序中進行參數交互就需要開啓RedirectStandardInput 這個參數
  • 同理,想要獲取exe命令行返回的結果,也需要開啓RedirectStandardOutput 這個參數
  • 參數設置完畢後就能開啓進程,這裏也記得隨手關閉進程。(節約資源)
其餘幾個參數可以看註釋解釋,還有一些不太常用的參數我在這裏就多一一列舉了,需要用到的時候可以自己去查閱ProcessStartInfo 以及Process 的官方文檔,裏面都有詳細的教程。 上面是將操作的流程包裝成了一個函數,可以直接調用,靈活性更高,下面舉一個測試實例:
public String Get()
        {
            Process process1 = new Process();//創建進程對象 
            ProcessStartInfo startInfo = new ProcessStartInfo();//進程信息對象
            String str = ExecProc("START 15", @"C:\Users\VULCAN\Desktop\Gobang\pbrain-SlowRenju19.exe", process1, startInfo);
            return str;
        }

這個代碼我是想把獲得到的數據呈現在前端頁面,如果用控制檯的話就直接用Console.WriteLine()函數就ok。順便擴展一句,如果想用持續與前端頁面進行數據交互,這時候可能就無法直接傳遞數據,需要將數據包裝成json格式進行發送,而前端用ajax進行接收就好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章