如何知道 Process.Start 何时加载 winform?
题
我在 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";
然后让子进程回调店主过程,让它知道它已经开始了,通过远程或类似的东西。
不隶属于 StackOverflow