WinForm이 Process.Start에 의해로드되는시기를 어떻게 아는가?
문제
나는 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";
그런 다음 자식 프로세스가 소유자 프로세스에 대한 콜백을 통해 원격 또는 그와 비슷한 것을 통해 시작되었음을 알리십시오.
제휴하지 않습니다 StackOverflow