WinフォームをProcess.Startによってロードされたときにどのように知っていますか?
質問
私はWindowsFormの(C#の.NET 3.5)中だと、ボタンのクリックにProcess.Startを(使用して(も3.5を.NET)別の外部アプリケーション)を起動し、私はそれを立ち上げた後、それが利用可能なときに理解しています。
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()?
どのように私はそれを行うことができますか?
解決
<のhref =「http://msdn.microsoft.com/en-us/library/system.diagnostics.process.waitforinputidle.aspx」のrel = "nofollowのを呼び出し、そのフォームを作成するプロセスを待つために、 noreferrer "> WaitForInputIdle
の方法。
それは準備ができているかどうかを調べるには、これを試してください:
bool isReady = proc.WaitForInputIdle(0);
あるいは、
bool isReady = (proc.MainWindowHandle != IntPtr.Zero);
また、<のhref =「http://msdn.microsoft.com/en-us/library/ms644950%28VS.85%29.aspx」のrelを使用して、フォームにメッセージを送信するためにMainWindowHandleプロパティを使用することができます= "nofollowをnoreferrer"> SendMessage
のAPI関数
他のヒント
あなたは、それが開始されたかを知らせるプロセスに引数を渡すことができます。
psInfo.Arguments = "-startedByProcess";
そして、それがリモートまたはそのような何かを経由して、開始している知っているように、所有者のプロセスに子プロセスコールバックを持っています。
所属していません StackOverflow