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);

SendMessage您还可以使用 MainWindowHandle 属性通过API 函数将消息发送到表单

于 2009-07-24T14:20:44.947 回答
0

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

psInfo.Arguments = "-startedByProcess";

然后让子进程回调到所有者进程,让它知道它已经启动,通过远程或类似的方式。

于 2009-07-24T14:13:37.500 回答