2

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

どうすればできますか?

4

2 に答える 2

3

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

準備ができているかどうかを確認するには、次のことを試してください。

bool isReady = proc.WaitForInputIdle(0);

または、代わりに、

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

また、MainWindowHandle プロパティを使用して、SendMessageAPI 関数を使用してフォームにメッセージを送信することもできます

于 2009-07-24T14:20:44.947 に答える
0

プロセスに引数を渡して、プロセスがどのように起動されたかを知らせることができます。

psInfo.Arguments = "-startedByProcess";

次に、子プロセスを所有者プロセスにコールバックさせて、リモート処理などを介して開始したことを知らせます。

于 2009-07-24T14:13:37.500 に答える