【问题标题】:How know when a winform is loaded by Process.Start?如何知道 Process.Start 何时加载 winform?
【发布时间】:2009-07-24 14:12:11
【问题描述】:

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

我该怎么做?

【问题讨论】:

    标签: c# winforms process loaded


    【解决方案1】:

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

    要确定它是否准备好了,试试这个:

    bool isReady = proc.WaitForInputIdle(0);
    

    或者,或者,

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

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

    【讨论】:

      【解决方案2】:

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

      psInfo.Arguments = "-startedByProcess";
      

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

      【讨论】:

        猜你喜欢
        • 2011-08-10
        • 2012-06-10
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 2020-06-21
        • 1970-01-01
        • 2017-02-12
        • 1970-01-01
        相关资源
        最近更新 更多