利用IE 实现Web 页面截图

来源:互联网 发布:知其雄,守其雌 编辑:程序博客网 时间:2024/04/24 10:11

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

原创粉丝点击