社区
网络编程
帖子详情
BHO的疑惑 有谁能解?
vcPlayer
2007-06-29 01:02:04
打开一个IE窗口时,若这个窗口属于一个新进程,则我的BHO对象只收到一次SetSite();
而当这个窗口不属于一个新进程时(如在hao123.com 的主页上点击时弹出的新窗口),则我的BHO会收到两次SetSite()。这是为什么?关键的是这样一来,我传给BHO的浏览器接口就不能使用了,会引起程序崩溃!!!!!!!!!!!
苦闷中,渴望有人支招!
...全文
778
10
打赏
收藏
BHO的疑惑 有谁能解?
打开一个IE窗口时,若这个窗口属于一个新进程,则我的BHO对象只收到一次SetSite(); 而当这个窗口不属于一个新进程时(如在hao123.com 的主页上点击时弹出的新窗口),则我的BHO会收到两次SetSite()。这是为什么?关键的是这样一来,我传给BHO的浏览器接口就不能使用了,会引起程序崩溃!!!!!!!!!!! 苦闷中,渴望有人支招!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vcPlayer
2007-07-03
打赏
举报
回复
不好意思,前面又在忙别的事情去了。先结贴,若有疑问再问。谢谢蒋大侠的热情帮助:)。
蒋晟
2007-07-01
打赏
举报
回复
用CoMarshalInterThreadInterfaceInStream/CoGetInterfaceAndReleaseStream 或者IGlobalInterfaceTable来列集你的接口
vcPlayer
2007-06-30
打赏
举报
回复
感谢LS两位的热情帮助,现在初步定位为线程问题。
由于我的BHO在执行过程中会有一些界面显示,因此是开了一个线程在执行我的功能代码。这个线程是在构造函数里面创建的,没事的时候就等待一个事件通知;线程的参数为BHO的类对象。
现在极度怀疑:子窗口的BHO在构造的时候,this 指针是否是真的代表“自己”?
还望解惑!谢谢。
蒋晟
2007-06-29
打赏
举报
回复
捕获DWebBrowserEvents2::OnQuit事件,这个事件触发的时候你应该释放你获得的接口
lzf8977
2007-06-29
打赏
举报
回复
DocumentComplete
的消息会比较多,要判断一下是不是最初的webbrowser
vcPlayer
2007-06-29
打赏
举报
回复
MSHTML::IHTMLWindow2Ptr pWin2 = NULL;
//pDoc2 是MSHTML::IHTMLDocument2Ptr对象,是通过IWebBrowser2Ptr接口一步一步正确获得的
pDoc2->get_parentWindow(&spWin2);
就是上面一句出问题。肯定能够保证网页已经“完成”OnDocumentComplete.
这个子窗口一出问题,同一IE进程的所有窗口都将被关闭。我就怀疑是否是接口指针的引用计数或是线程安全属性的继承……引起的?为什么在主窗口中可以这样用,而到子窗口就不行了呢?
蒋晟
2007-06-29
打赏
举报
回复
遍历DOM对象要在DocumentComplete之后才行
vcPlayer
2007-06-29
打赏
举报
回复
逛坛N年,今日终有幸碰见闻名遐迩的蒋兄了!!!!!
可能是我表达不清楚,再解释一下:
不属于一个新进程时=====》是指新窗口与原来的窗口处于同一进程中,而非是新通知旧。
我的BHO就是在SetSite() 中保存这个浏览器接口。但当我新开的这个窗口与前一个窗口处于同一进程中时(比如在一个主页中弹出一个新窗口),那么这个新窗口中的BHO对象收到的浏览器接口就不能正常使用(主要是不能遍历DOM对象),会引起程序崩溃。
补充:BHO线程是公寓模型。是否是线程继承时出了问题?Help me........
蒋晟
2007-06-29
打赏
举报
回复
不属于一个新进程时,实际上是新的进程在通知旧的进程打开窗口之后自己退出
你为什么要给BHO传浏览器接口?SetSite()不就是么
vcPlayer
2007-06-29
打赏
举报
回复
没人来?再多的分数也送不掉!
自己顶一个先。
IE安全系列:脚本先锋(I)
可能有的同学会对代码执行的优先顺序产生
疑惑
,在IE中脚本的执行顺序是: (1)谁的块(SCRIPT)在前面谁先执行; (2)各个分块中,函数优先被解析,但是不执行,函数解析完成后,从最外层的Public...
alexa作弊大全经典收藏版
比如有一种方法说能通过MYIE这样的浏览器来刷排名,显然此文的作者并不懂Alexa Toolbar的工作原理,MYIE是不会加载Alexa Toolbar的。AlexaBooster也不行,因为它忽视了aid的生成算法,以及cookie的作用。 4、...
超级asp.net资料
最新版FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简解(提供博客园本地下载) 经典数据库记录分页代码 [GridView控件]自定义分页 Web C#2.0 DataSet和Reader封装组件实现自动多数据库切换...
整理的asp.net资料(收藏)
最新版FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简解(提供博客园本地下载) 经典数据库记录分页代码 [GridView控件]自定义分页 Web C#2.0 DataSet和Reader封装组件实现自动多数据库切换...
asp.net 实用资料
最新版FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简解(提供博客园本地下载) 经典数据库记录分页代码 [GridView控件]自定义分页 Web C#2.0 DataSet和Reader封装组件实现自动多数据库切换(含组件源码和实例) ...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章