解决方案 »

  1.   

    其实这个问题CHtmlView(内部也就是IE)已经实现了,同一个页面访问过一次以后,绝大部分可缓存的图片等文件都被缓存到了C盘的某个临时文件夹,第二次访问的时候,这些图片都是从本地硬盘上加载的。你可以用Fiddler等HTTP抓包工具看一看是不是这样。
    当然,非要自己“实现”的话,可以Hook相关的API来进行处理。CHtmlView内部最终是通过Wininet来从WEB服务器上获取数据的,Wininet的底层又是WinSocket,只要Hook  Wininet或WinSocket的关键API,拦截CHtmlView获取http://avatar.csdn.net/F/5/5/2_smilecabbage.jpg的HTTP请求,并从本地硬盘读取文件后给予返回
      

  2.   

    可以先用DocumentComplete中利用IWebbrowser2得到IHTMLDocument然后QueryInterface得到IPersistStreamInit,然后获取网页源码,修改一下网页源码,再用Load加载源码
      

  3.   

    多谢了,在网上找到了hook  wininet这方面的资料,现在时能截获到   http://avatar.csdn.net/F/5/5/2_smilecabbage.jpg  这条请求,能检测到它的connect  request 跟response 这三个。现在在request阶段时,我将请求的objectname改成其它文件的名字,是有效果的,最后请求得到的图片也跟着变了,但是只限于同一个connect  。不知道怎么将本地的图片返回过去。  能指点下吗?
      

  4.   

    它对http://avatar.csdn.net/F/5/5/2_smilecabbage.jpg发起GET请求后,读回jpg内容的数据应该是通过
    InternetReadFile

    InternetReadFileEx
    可以Hook这个API后,把本地jpg的数据返回给它