关于IE编程制作BHO的一个问题,50分送上

snmhm1991 2012-03-29 02:32:53
在为IE8和IE9做BHO的时候,会碰到用户会添加多个Tab选项卡的情况,我想问的是,当用户用右键的“在新选卡打开”时,这时IE创建的一个新的Tab的句柄可以如何获取?直接遍历所有Tab的话,又是如何区别它就是刚刚创建的那一个呢?求解答。。
...全文
111 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
snmhm1991 2012-03-30
  • 打赏
  • 举报
回复
此贴结贴放分了。。
snmhm1991 2012-03-29
  • 打赏
  • 举报
回复
再补充问大家一个问题,

怎么获取当前网页中某个按钮或者其他控件、元素的位置呢?或许这里所说的一个按钮在网页中其实就是一张图片而已,如何获取此时控件的位置?
snmhm1991 2012-03-29
  • 打赏
  • 举报
回复
这个我知道,每产生一个Tab的确都会加载一个BHO实例,但是在IE8与IE9中,用get_HWND函数获取的都是浏览器本身的句柄。。

现在我的解决办法是,在IE8中遍历所有的Tab,只要发现谁的标题是"Windows Internet Explore"那么这个就是新创建的一个Tab,因为在IE8中新Tab的初始标题就是“Windows Internet Explore”,然后在IE9中找对应的名称就好了

现在我有个想法是,可不可以通过查找当前所被加载的DLL的父进程(因为IE8,9每一个Tab一个线程),然后再来获取它对应的窗口句柄
oyljerry 2012-03-29
  • 打赏
  • 举报
回复
BHO本身会被加载到新Tab
hotpos 2012-03-29
  • 打赏
  • 举报
回复
看上去这个像
http://msdn.microsoft.com/en-us/library/aa768288(v=vs.85).aspx

下面描述里面有这样的信息
The event is raised during the following actions:

The user clicks a link while pressing the SHIFT or CTRL key.
The user right-clicks a link and selects Open in New Window or Open in New Tab .
fishion 2012-03-29
  • 打赏
  • 举报
回复
如果你已经得到了使用BHO得到那个新建窗口通知的话,那可以在之前先保存当前保存当前存在的窗口的句柄,当有新建窗口时,再遍历一次当前存在的窗口,然后与之前保存的进行比较。

如果不是用BHO,可以hook一下WH_CBT,当nCode等于HCBT_CREATEWND前先遍历得到 当前Tab窗口有哪些,再让它运行后遍历比较,得到新窗口句柄,或者可以根据hwndInsertAfter得到新窗口
snmhm1991 2012-03-29
  • 打赏
  • 举报
回复
大家都来看看呀,帮帮忙吧

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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