描述:
现在大家都用bho来阻止ie弹出新窗口。
我也想试着做一下。
我的问题是,如何获得新窗口的IWebBrowser2。
解决方案1:
READYSTATE m_ReadyState;
m_spWebBrowser2->get_ReadyState(&m_ReadyState);
if(m_ReadyState!=READYSTATE_COMPLETE)
{
*pDispParams->rgvarg[0].pboolVal=TRUE;
return S_OK;
}
else
{
*pDispParams->rgvarg[0].pboolVal=FALSE;
return S_OK;
}
这段代码并不能屏蔽弹出窗口,典型的例子,你打开一个sina的窗口就知道了。sina的弹出窗口在窗口全打开的时候才弹出,这种方法是无效的。
>"获取新窗口的IWebBrowser2"。
新的窗口不是你自己创建的窗口?
参见http://blog.csdn.net/jiangsheng/archive/2003/11/09/3795.aspx
你不是想等新窗口打开然后才关掉它吧?
我记得有方法可以在新窗口打开前截获该事件.
WebBrowser包含了一个NewWindow2的事件,在下列情况产生的时候触发。
1. 用户按shift键点击超链接
2. 在超链接出右键菜单选择在新窗口打开
3. 在主菜单上选择新建窗口
4. 超链接设置了target,但是找不到相对应匹配的时候
5. 通过编程window.open打开
楼主你可以通过检测NewWindow2事件来判断是否有新的窗口打开,根据预先定义的拦截规则拦截那些垃圾窗口。
您可能想查找下面的文章:
- 基于ATL的应用(BHO中如何使用MFC的类CString,CFileDialog等)?
- 高分求教:BHO技术拦截Flash,但写入的js代码无效!
- 关于BHO拦截按键的问题
- 想BHO只加载ie,不加载我的电脑,但出错atlbaseh中5668行,ATLASSERTpM->m_hInst!=NULL;
- VC++开发BHO插件—定制你的浏览器
- BHO的问题
- 在一个ie(BHO,band)插件中如何控制ie的弹出窗口的。
- 什么工具可以反编译一个DLL,这个dll是bho
- BHO中DIID_HTMLElementEvents2在哪个头文件中定义?
- 在BHO中的DISPID_DOCUMENTCOMPLETE事件中取不到IHTMLDocument2的属性