有時候在項目中,會調用一個控制檯應用程序去處理一些工做。
那在咱們的程序中要怎麼樣作才能調用一個控制檯應用程序並將參數傳遞過去,控制檯程序執行完後,咱們的程序又怎樣獲取返回值?
代碼以下:
調用代碼:this
try { Process pro = new Process(); //控制檯應用程序所在目錄 pro.StartInfo.FileName = @"C:\Users\Administrator\Desktop\WindowsFormsApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe"; pro.StartInfo.UseShellExecute = false; pro.StartInfo.CreateNoWindow = false; //是/否 不顯示窗口 //是否將應用程序的輸出寫入 System.Diagnostics.Process.StandardOutput 流中。 //若是設置爲true,則能夠使用 pro.StandardOutput.ReadLine()來獲取cmd 窗口裏的輸出內容, //而且 cmd窗口裏不在出現輸出。 pro.StartInfo.RedirectStandardOutput = true; //命令行參數,以空格隔開,即 控制檯應用程序的Main方法的參數 pro.StartInfo.Arguments = "123 456"; pro.Start(); //顯示控制檯程序的輸出內容 this.txtConsoleValue.Text += "\r\n" + pro.StandardOutput.ReadLine(); //調用控制檯程序的返回值, //當控制程序的Main放有返回值時,能夠經過 ExitCode 獲取 int result = pro.ExitCode; } catch (Exception) { throw; }
控制檯 代碼:
static void Main(string[] args) { if (args.Length > 0) { Console.WriteLine("參數1:" + args[0] + " 參數2:" + args[1]); } //當調用方,將pro.StartInfo.RedirectStandardOutput設置爲false時,能夠進行輸入交互, Console.WriteLine("請輸入參數:"); string param = Console.ReadLine(); Console.WriteLine("您輸入的參數爲:" + param); System.Threading.Thread.Sleep(3000); }