多个ie进程时弹出的ie窗口如何使其在最前面??急!!

longrm 2008-09-22 04:34:42
我现在做的系统前台使用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页面,

这个页面不是弹出在当前页面前,而是在后面!


有谁知道怎么回事的,帮我解决一下,谢谢!!!!急!!!!

回答有效立刻结贴给分!
...全文
548 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengmenghua 2010-04-14
  • 打赏
  • 举报
回复
这问题的解决办法之一:用直接调用IE+URL参数 但比较占资源 而且也有些小问题。
zhengmenghua 2010-04-14
  • 打赏
  • 举报
回复
2楼的回答真悲剧 就这代码 明显是IE 还讨论别的浏览器 纯属瞎掰
ylq6836 2008-12-29
  • 打赏
  • 举报
回复
learning......................
longrm 2008-09-30
  • 打赏
  • 举报
回复
算了,接贴
longrm 2008-09-24
  • 打赏
  • 举报
回复
有其他ie进程时没法置前,哎,实在不知道怎么做了
longrm 2008-09-23
  • 打赏
  • 举报
回复
hIE := CreateOleObject('InternetExplorer.Application');

这个hIE不就是句柄么,实在不明白lsd为什么还要找一遍,

你说的SendMessage(h,WM_SYSCOMMAND,SC_RESTORE,0);我试过了,

只是激活,没法使这个窗体置前,根本没用
无条件为你 2008-09-22
  • 打赏
  • 举报
回复
写错了,是CreateProcess,当然,还需要读注册表判断当前机器的浏览器类型,带参数调用等。
无条件为你 2008-09-22
  • 打赏
  • 举报
回复
可以用CrteaeProcess来创建一个IE进程,自然可以获得进程ID,然后遍历所有窗口,比较进程ID,得到窗体句柄,由此句柄发出控制命令。(例如if IsIconic(h) then SendMessage(h,WM_SYSCOMMAND,SC_RESTORE,0);作用是如果窗口处于最小化状态,则发消息将它激活。)大概3个API可以使该窗口置前。此方法是万能法,适合所有浏览器。

如果你只用默认的IE浏览器,并且已经确认欲打开的窗口标题,那么就没有那么麻烦,直接用FindWindow来做就可以。

如果你的贴子给予加分,我会考虑费点事给你写出代码。否则只给你这些提示,自己摸索吧,学习总是有一个过程的,不能总指望别人。

5,935

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧