2009-07-24 13 views
2

私はWindowsForm(c#.net 3.5)にあり、ボタンをクリックすると、Process.Start()を使って別の外部アプリケーション(.net 3.5)を起動し、起動した後にいつ利用可能かを理解します。WinformがProcess.Startによってロードされる時期を知る方法は?

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()? 

どうすればいいですか?

答えて

3

プロセスがフォームを作成するまで待機するには、メソッドを呼び出します。

それは準備ができているかどうかを調べるには、これを試してみてください。代わりに

bool isReady = proc.WaitForInputIdle(0); 

かを、

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

あなたはまた、SendMessage API関数を使用して、フォームにメッセージを送信するためにMainWindowHandleプロパティを使用することができます

0

プロセスに引数を渡して、プロセスの起動方法を知らせることができます。

psInfo.Arguments = "-startedByProcess"; 

はその後、それがリモートまたはそのような何かを経由して、開始している知っているように、所有者のプロセスに子プロセスコールバックを持っています。

関連する問題