我需要从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是否仍然存在 –