我们的程序和你的有同样的要求,也发现有些程序的主窗口在刚用Process启动后抓不到,必须等待几秒钟,估计是这类程序在启动的时候它并不马上生成主窗口而是进行一些其它的操作,比如读数据连接服务器等. 这时候只有等到它的主窗口生成后才能抓到,但为了防止阻塞主线程,我们用System.windows.Forms.Timer 延时一下操作process.MainWindowHandle.

解决方案 »

  1.   

    恩,这个方法好,我已经能把它的主窗口抓到了,并把它设置为程序窗体myForm的子窗体,如果对主窗口操作而产生一些子窗口的话,这些子窗体并不会自动成为程序窗体的子窗体。
    请问这该如何做呢?我想过在timer事件里一直查寻产生主窗口的进程是否还有其它窗体,如果有的话,也把这些子窗体设置为myForm的子窗体,但我觉得这中方法不大可取,因为得花时间查寻,并且得记住各个进程。
    有没有什么方法能把进程得主窗口设置为程序窗体myForm得子窗体后,以后进程的其它窗体也自动设置为myForm的子窗体呢?
      

  2.   

    呵呵,对于进程再产生新的子窗口目前也是束手无策,我们做到的和你一样,只是改变了主窗口的Parent Window. 你要是研究出来什么好办法别忘了告诉我.
      

  3.   

    延时的时间是可以自动调整的吗?就是说根据不同的进程,所需的时间可长可短,我现在延时都为4s,感觉太长了。本来像notepad.exe是不需要延时的,现在为了整合所有的进程,延时时间就只能设置为进程里时间最长的那一个。我的工作邮箱是[email protected],你也可以直接发到这邮箱,网页有时忘了去看了^_^。