我需要從Windows窗體應用程序中打開一個外部進程。更重要的是,我需要在應用程序的運行時間內多次執行此操作。基本上,我從命令提示符多次使用參數執行.exe文件,但是我需要將文件夾更改爲.exe所在的位置,以使其正常工作。 到目前爲止,我打開CMD,像這樣:C#在CMD中更改文件夾並啓動進程,等待它完成
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.UseShellExecute = false;
Process process = Process.Start(processStartInfo);
然後使用process.WriteLine喂到CMD命令。
process.StandardInput.WriteLine("Awin.exe -X " + filePath + "/" + fileNumber + " ID=\"" + id + "\"");
我需要爲幾個fileNumber文件做這個。另外,我需要等待從輸入開始的過程結束,然後再進入下一個過程。 有沒有更好的方法來做到這一點,因爲我沒有從使用process.WaitForExit獲得好結果
你是什麼意思*我不使用process.WaitForExit *取得了良好的效果?是否訂閱['Process.Exited'](http://msdn.microsoft.com/en-us/library/system.diagnostics.process.exited.aspx)event yeild準確/可靠/ etc結果? –
我的意思是,在通知WaitForExit已經完成後,從cmd調用的Awin.exe仍然繼續運行,儘管WaitForExit將其註冊爲完成。 – Flopn
與Process.Exited事件相同的結果?否則,您可以獲取Awin.exe的ProcessID,並在退出時繼續輪詢Processes以檢查ProcessID是否仍然存在 –