我在一个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()?
我该怎么做?
答案 0 :(得分:3)
要等待流程创建表单,请调用WaitForInputIdle
方法。
要了解它是否准备就绪,请尝试以下方法:
bool isReady = proc.WaitForInputIdle(0);
或者,或者,
bool isReady = (proc.MainWindowHandle != IntPtr.Zero);
您还可以使用MainWindowHandle属性使用SendMessage
API函数向表单发送消息
答案 1 :(得分:0)
您可以将参数传递给流程,让它知道它是如何启动的。
psInfo.Arguments = "-startedByProcess";
然后让子进程回调所有者进程,让它知道它已经启动,通过远程处理或类似的东西。