• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 利用BHO写的插件如何在浏览器显示之前拦截网页源代码???急求高手指点!!!

利用BHO写的插件如何在浏览器显示之前拦截网页源代码???急求高手指点!!!

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 利用BHO写的插件如何在浏览器显示之前拦截网页源代码???急求高手指点!!!等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 利用BHO写的插件如何在浏览器显示之前拦截网页源代码???急求高手指点!!!
描述:

是这样的,我的目的是在我访问某个网址的时候,当下载完网页的内容,并且还没被浏览器解释执行之前拿下网页源代码,然后修改之,还给浏览器解释执行。我现在利用的事BHO来写这个插件,但是现在我的代码是
case DISPID_DOCUMENTCOMPLETE:
{
USES_CONVERSION;
CComQIPtr<IHTMLDocument2> spHTML;
CComPtr<IDispatch> pDisp;
HRESULT hr = mWebBrowser2->get_Document((IDispatch**)(&spHTML));
if (FAILED(hr))
   return hr;
if(SUCCEEDED(hr))
{
CComQIPtr<IHTMLDocument2> spHTMLDoc = spHTML;
CComPtr<IHTMLElement> sbody;
HRESULT hr = spHTMLDoc->get_body(&sbody);
BSTR sdoc;
hr = sbody->get_outerHTML(&sdoc);
LPTSTR psz = new TCHAR[500000];
lstrcpy(psz,OLE2T(sdoc));
FILE *temp;
temp = fopen("C:\\temp.txt", "w+");
fprintf(temp,"%s\n",psz);
fclose(temp);
}
break;
}
这样的话,在DOCUMENTCOMPLETE时间发生时,网页已经显示出来了,拿到的代码就迟了。
经过分析我知道应该是在case DISPID_DOWNLOADCOMPLETE时获取源代码,但是此时就不可能通过
HRESULT hr = spHTMLDoc->get_body(&sbody);来获得,请高手指点,怎么才能在DISPID_DOWNLOADCOMPLETE时获取到代码呀!!获取了经过修改以后又怎么“还”给浏览器呢?


解决方案1:

http://www.cppblog.com/phenix-burn/archive/2006/08/29/11824.html

解决方案2:

用IPersistStreamInit::Save() 方法将下载的你容保存到流,修改完成后,在用IPersistStreamInit::Load()加载。
或者在开始导航时直接用wininet API进行下载,修改完成后用IPersistStreamInit::Load()加载


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 关于线程不能正常退出的原因分析
  • 2017-06-04 100分急求一个ATL的COM,关于如何传递数组的问题
  • 2017-06-04 关于树形控件的问题
  • 2017-06-05 关于在DLL中使用声音资源的问题
  • 2017-06-04 分割窗口时用ChildFrm的OnCreateClient出错
  • 2017-06-05 想了几天的问题,急死人了高手请进!!!!!!!!!!!1
  • 2017-06-04 因工作关系,需要写一个OCX,在其中需要调出word文档,对word修改后进行保存入库。大家给点资料好吗?
  • 2017-06-05 VC能否获取网页中JS的值?
  • 2017-06-04 为什么我的ActiveX控件第一次显示在浏览器里面的字体颜色是灰色的,而且画线操作出不来?最小化-〉最大化后才正常?
  • 2017-06-04 奇怪!为什么在属性页里的按钮不响应click事件???

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于免注册调用问题
    • 用IHTMLInputTextElement怎么才能写入数据到数字文本框中
    • 按标准格式新开线程编译竟然说参数错!
    • 困惑,为什么我的线程不能执行?
    • 一个用MFC写的OCX显示透明位图时的奇怪问题
    • 关于DirectShow音乐播放器问题
    • 研究过木马的大虾,请教一个进程隐藏的问题,在win98下面到底能不能使用CreateRemoteThread?
    • 求助:dll被调用的细节
    • 两个线程之间如何进行数据交换?
    • 在VB中使用VC写的OCX出现的一个问题?求救...

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有