多个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页面,

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


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

回答有效立刻结贴给分!
...全文
517 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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来做就可以。

如果你的贴子给予加分,我会考虑费点事给你写出代码。否则只给你这些提示,自己摸索吧,学习总是有一个过程的,不能总指望别人。
BHO(Browser Helper Object,浏览器辅助对象,简称BHO)   BHO是微软推的作为浏览器对第三方程序员开放交互接口的业界标准,通过简单的代码就可以进入浏览器领域的“交互接口”(INTERACTIVED Interface)。通过这个接口,程序员可以编写代码获取浏览器的行为,比如“后退”、“前进”、“当前页面”等,利用BHO的交互特性,程序员还可以用代码控制浏览器行为,比如修改替换浏览器工具栏,添加自己的程序按钮等。这些在系统看来都是没有问题的。BHO原来的目的是为了更好的帮助程序员打造个性化浏览器,以及为程序提供更简洁的交互功能,现在很多IE个性化工具就是利用BHO的来实现。 编辑本段 技术优势   “浏览器劫持”是一种不同于普通病毒木马感染途径的网络攻击手段,而是使用各种技术(如DLL插件等)插件对用户的浏览器进行篡改。安装后,它们会成为浏览器的一部分,可以直接控制浏览器进行指定的操作,根据需要,可以让你打开指定的网站,甚至是收集你系统中的各种私密信息。最可怕的是只有当浏览器已经被劫持了,你才会发现,反应过来,原来电脑已经现了问题。比如IE主页被改,开机就会弹广告等等。目前,浏览器劫持已经成为Internet用户最大的威胁之一。其实“浏览器劫持”就是通过BHO的技术手段进入你的系统的,而这种技术是合法的。   从某种观点看,Internet Explorer同普通的Win32程序没有什么两样。借助于BHO,你可以写一个进程内COM对象,这个对象在每次启动时都要加载。这样的对象会在与浏览器相同的上下文中运行,并能对可用的窗口和模块执行任何行动。例如,一个BHO能够探测到典型的事件,如GoBack、GoForward、DocumentComplete等;另外BHO能够存取浏览器的菜单与工具栏并能做修改,还能够产生新窗口来显示当前网页的一些额外信息,还能够安装钩子以监控一些消息和动作。 编辑本段 注册表位置   BHO在注册表中的位置是:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects,有兴趣的朋友可以在这里做做实验。不过一定要记住你更改的每一步,否则会错的哦!   BHO对象依托于浏览器主窗口。实际上,这意味着一旦一个浏览器窗口产生,一个新的BHO对象实例就要生成。任何 BHO对象与浏览器实例的生命周期是一致的。其次, BHO仅存在于Internet Explorer 4.0及以后版本中。   如果你在使用Microsoft Windows? 98, Windows 2000, Windows 95, or Windows NT版本4.0 操作系统的话,也就一块运行了活动桌面外壳4.71,BHO也被 Windows资源管理器所支持。 BHO是一个COM进程内服务,注册于注册表中某一键下。在启动时,Internet Explorer查询那个键并把该键下的所有对象预以加载。   迅雷中TDAtOnce_Now.dll和xunleiBHO_Now.dll为安全   如何发现BHO里面的危险模块.   首先有一个能够查看进程的软件 冰刃就不错 下面以它为例:   先打开冰刃—会看到一个BHO在这里就可以看到危险BHO进程

5,927

社区成员

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

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