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

我该怎么做?

有帮助吗?

解决方案

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

要了解它是否已准备好,请尝试以下操作:

bool isReady = proc.WaitForInputIdle(0);

或者,或者,

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

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

其他提示

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

psInfo.Arguments = "-startedByProcess";

然后让子进程回调店主过程,让它知道它已经开始了,通过远程或类似的东西。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top