利用IE 实现Web 页面截图

1. 目的

   在Codeproject 中看到有人做这个,  稍微做了下修改, 做成了命令行的, 使用方法是 
   iesnap.exe url filename
      用以抓取 URL 对于的Web, 并且将Web 的截图保存在Filename 中.
      url : 要截图的网址
      filename: 截图保存文件名
       
2. 思路
   
 主要使用WebBrowser Control 和 MSHTML 来完成.
 a. 创建WebBrowser control
 b. 从WebBrowser Control 获取 IWebBrowser2 接口, 用 IWebBrowser2::Navigate2 来访问URL
 c. 获得IHTMLElementRender (WebBrowser -> IHTMLDocument2 -> IHTMLElement -> IHTMLElementRender), 使用该接口的DrawToDC 来获取URL 对应的页面截图内容.
 d. 用GDI 的 Image 来保存截图到Filename

3. 
   可以看看原文以得到更好的解答   
   我看的那个文章: Capture an HTML document as an image
   另外一篇C# 的文章: Image Capture Whole Web Page using C#


4. 问题
       
 a. DocumentComplete 事件会在URL 对应页面的每个元素下载完毕的时候都会发生, 所以:( 还不知道哪个事件是整个页面下载完毕的事件:/
 b. 现在是通过MFC 来创建WebBrowser Control 的, 不知道怎么在Win32 Application 中创建这个控件.
 c. 不知道如何得到整个页面的大小, 现在只能保存页面截图的一部分:(
   这个已经知道怎么做了. 
   IHTMLElement2 的 scrollWidth & scrollHeight 加上 scrollLeft & scrollTop 来实现, 但是不知道为什么, put_scrollTop & put_scrollLeft 这些函数好像不对, 只能截获到一部分页面截图.:( 不知道为什么
   


 代码可以在这里下载: http://www.cppblog.com/Files/bigsml/iesnapshot.zip

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值