<2007年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

统计

  • 随笔 - 44
  • 文章 - 0
  • 评论 - 86
  • 引用 - 0

常用链接

留言簿(6)

随笔分类(31)

随笔档案(44)

Mining

最新随笔

搜索

  •  

最新评论

阅读排行榜

评论排行榜

利用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

posted on 2007-06-10 18:55 泡泡牛 阅读(4916) 评论(2)  编辑 收藏 引用 所属分类: Develop

评论

# re: 利用IE 实现Web 页面截图 2007-06-11 11:36 东奔西走

关注中,希望你能搞定整个页面的保存,呵呵
  回复  更多评论    

# re: 利用IE 实现Web 页面截图 2008-07-04 16:21 sharewarecheap

还是只能保存一部分图片啊! 全部的怎么办?
  回复  更多评论    

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理