Windows Forms 앱에서 외부 프로세스를 열어야합니다. 게다가 앱 실행 시간 동안 여러 번해야합니다. 기본적으로 명령 프롬프트에서 여러 번 인수를 사용하여 .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);
는 그 다음 CMD에 명령을 공급하기 위해 process.WriteLine를 사용하여.
process.StandardInput.WriteLine("Awin.exe -X " + filePath + "/" + fileNumber + " ID=\"" + id + "\"");
그리고 여러 개의 fileNumber 파일에 대해이 작업을 수행해야합니다. 또한, 다음 단계로 진행하기 전에 입력에서 끝까지 프로세스가 시작될 때까지 기다려야합니다. 좋은 결과를 얻지 못하기 때문에 더 좋은 방법이있을 것입니다. WaitForExit
내가 * process.WaitForExit을 사용하는 좋은 결과를받지 못했습니다 * 당신은 무엇을 의미합니까? ['Process.Exited'] (http://msdn.microsoft.com/en-us/library/system.diagnostics.process.exited.aspx) 이벤트를 정확하고 신뢰할 수있는 결과로 구독합니까? –
WaitForExit이 완료되었음을 알리는 메시지가 표시되면 WaitForExit에서 작업을 끝낸 것처럼 등록했지만 cmd에서 호출 한 Awin.exe가 계속 실행됩니다. – Flopn
Process.Exited 이벤트와 동일한 결과가 나타 납니까? 그렇지 않으면 Awin.exe의 ProcessID를 얻을 수 있으며 종료 할 때 계속 폴링합니다. ProcessID가 여전히 유효한지 확인하는 프로세스 –