문제

나는 WindowsForm (C# .NET 3.5)에 있고 버튼을 클릭하면 Process.Start ()를 사용하여 다른 외부 응용 프로그램 (.NET 3.5)을 시작하고 시작한 후 언제 사용할 수 있는지 이해합니다.

    ProcessStartInfo psInfo = new ProcessStartInfo(@"MyApplication.exe");
psInfo.RedirectStandardOutput = true;
psInfo.RedirectStandardError = true;
psInfo.UseShellExecute = false;
psInfo.CreateNoWindow = true;
Process proc = Process.Start(psInfo);

proc... IsFullyLoaded()?

어떻게하니?

도움이 되었습니까?

해결책

프로세스가 양식을 만들 때까지 기다리려면 WaitForInputIdle 방법.

준비 여부를 알아 보려면 다음을 시도하십시오.

bool isReady = proc.WaitForInputIdle(0);

또는 대안 적으로

bool isReady = (proc.MainWindowHandle != IntPtr.Zero);

MainWindowHandle 속성을 사용하여 다음을 사용하여 양식으로 메시지를 보낼 수도 있습니다. SendMessage API 기능

다른 팁

프로세스에 대한 논쟁을 전달하여 어떻게 시작되었는지 알려줄 수 있습니다.

psInfo.Arguments = "-startedByProcess";

그런 다음 자식 프로세스가 소유자 프로세스에 대한 콜백을 통해 원격 또는 그와 비슷한 것을 통해 시작되었음을 알리십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top