首先,操作和調用並不一樣,在我看來,調用也許就是直接運行這個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 這個參數
- 參數設置完畢後就能開啓進程,這裏也記得隨手關閉進程。(節約資源)
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進行接收就好。