我现在做的系统前台使用delphi(嵌入到jsp里),后台使用java, 有些地方要打开新ie页面的,我使用如下方法: hIE := CreateOleObject('InternetExplorer.Application'); 
hIE.visible:=True; 
hIE.Navigate(url); 这里有个问题,如果当前只有一个ie进程的话(即进入这系统的ie),打开页面没问题; 但加入有多个ie进程,比如你先开一个ie(例如打开baidu),然后再开一个ie, 进入这个系统(http://127.0.0.1:7001/test),这时点击按钮弹出新ie页面, 这个页面不是弹出在当前页面前,而是在后面! 
有谁知道怎么回事的,帮我解决一下,谢谢!!!!急!!!! 回答有效立刻结贴给分!

解决方案 »

  1.   

    可以用CrteaeProcess来创建一个IE进程,自然可以获得进程ID,然后遍历所有窗口,比较进程ID,得到窗体句柄,由此句柄发出控制命令。(例如if IsIconic(h) then SendMessage(h,WM_SYSCOMMAND,SC_RESTORE,0);作用是如果窗口处于最小化状态,则发消息将它激活。)大概3个API可以使该窗口置前。此方法是万能法,适合所有浏览器。如果你只用默认的IE浏览器,并且已经确认欲打开的窗口标题,那么就没有那么麻烦,直接用FindWindow来做就可以。如果你的贴子给予加分,我会考虑费点事给你写出代码。否则只给你这些提示,自己摸索吧,学习总是有一个过程的,不能总指望别人。
      

  2.   

    写错了,是CreateProcess,当然,还需要读注册表判断当前机器的浏览器类型,带参数调用等。
      

  3.   

    hIE := CreateOleObject('InternetExplorer.Application'); 这个hIE不就是句柄么,实在不明白lsd为什么还要找一遍,你说的SendMessage(h,WM_SYSCOMMAND,SC_RESTORE,0);我试过了,只是激活,没法使这个窗体置前,根本没用
      

  4.   

    这问题的解决办法之一:用直接调用IE+URL参数 但比较占资源 而且也有些小问题。