如何知道Process.Start何时加载winform?

时间:2009-07-24 14:12:12

标签: c# winforms process loaded

我在一个WindowsForm(c#.net 3.5)中,点击一个按钮,使用Process.Start()启动另一个外部应用程序(也就是.net 3.5),并在我启动它之后了解它何时可用。 / p>

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

我该怎么做?

2 个答案:

答案 0 :(得分:3)

要等待流程创建表单,请调用WaitForInputIdle方法。

要了解它是否准备就绪,请尝试以下方法:

bool isReady = proc.WaitForInputIdle(0);

或者,或者,

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

您还可以使用MainWindowHandle属性使用SendMessage API函数向表单发送消息

答案 1 :(得分:0)

您可以将参数传递给流程,让它知道它是如何启动的。

psInfo.Arguments = "-startedByProcess";

然后让子进程回调所有者进程,让它知道它已经启动,通过远程处理或类似的东西。