老问题:自编的CHtmlView浏览器,怎么截获超连接,不让新窗口在IE中打开?

yikai123 2007-01-21 12:55:10
折腾了好几天了,也发现之前有人遇到过这个问题,但是却没有找到切实可行的解决方案!
下面是我找到的比较权威的一种办法:
在 CHtmlView::OnNewWindow2 里面创建一个新的 WebBrowser,并把新的 WebBrowser 的 IDispatch 接口指针传过去。

可现在的问题是:怎么样获取要打开的新窗口的URL呢??
我快被折腾疯了,求大牛赶紧帮帮忙啊~~
十万火急啊!!!!

多谢多谢!!
...全文
778 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangzhang321 2012-07-13
  • 打赏
  • 举报
回复
目前我也遇到这个问题 请LZ贴代码 谢谢
牛 魔 王 2012-06-18
  • 打赏
  • 举报
回复
mark
j2ee1220 2010-07-20
  • 打赏
  • 举报
回复
自己弄懂了,要把代码贴出来分享一下啊。否则其他人看了跟没看一样。
蒋晟 2007-01-22
  • 打赏
  • 举报
回复
handle NewWindow2 to create a new window, and handle BeforeNavigate2 in the new window to get the URL
yikai123 2007-01-22
  • 打赏
  • 举报
回复
已经按照蒋晟大哥的方法搞定了!在同一个CHtmlView中处理NewWindow2函数,生成新的CHtmlView,并在OnBeforeNavigate2()实现新窗口URL的获取,并在原有的View中显示.

多谢各位的帮助!:)
yikai123 2007-01-22
  • 打赏
  • 举报
回复
jiangsheng(蒋晟)老大,您的回复我在别的地方也看到了,但是这个方法具体怎么实施实在是不得而知啊!请老大给点更详细的指点啊!多谢
yikai123 2007-01-22
  • 打赏
  • 举报
回复
Sangel():能不能留个email??我的是pkuyikai@gmail.com,这里不能粘贴附件,我们mail交流吧
Juchiyufei 2007-01-22
  • 打赏
  • 举报
回复
:)

学习了。
Sangel 2007-01-22
  • 打赏
  • 举报
回复
哦,,忘了我用的是atl
反正你在Invoke里看到DISPID_NEWWINDOW3事件就处理就是了,具体看msdn
Sangel 2007-01-22
  • 打赏
  • 举报
回复
SINK_ENTRY_INFO(0, DIID_DWebBrowserEvents2, DISPID_NEWWINDOW3, &OnNewWindow3, &NewWindow3Info)
void WINAPI OnNewWindow3(IDispatch ** ppDisp, VARIANT_BOOL* Cancel, DWORD dwFlags, BSTR bstrUrlContext, BSTR bstrUrl)
OnNewWindow3一定要设*Cancel = TRUE,否则就真弹窗了
那个bstrUrl就是新窗口url
Sangel 2007-01-21
  • 打赏
  • 举报
回复
在新的WebBrowser里获取
yikai123 2007-01-21
  • 打赏
  • 举报
回复
您说的这个有代码吗??可否用简单的CHtmlView代码给个示例?

我找了一下,发现在实现BHO的时候才会涉及到Invoke函数,那么在CHtmlView中应该如何生成这个函数,从而处理DISPID_NEWWINDOW3事件呢??

多谢啊!!
Sangel 2007-01-21
  • 打赏
  • 举报
回复
用DISPID_NEWWINDOW3这个事件,里面会传递新窗口url给你
yikai123 2007-01-21
  • 打赏
  • 举报
回复
新的webbrowser里根本没有跟弹出的新窗口建立联系,获取不到我所要的URL的~

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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