对IE 中的的网页进行截图, 可以通过2个编程接口:
1) HRESULT IHTMLElementRender::DrawToDC(HDC hDC)
代码示例:
IHTMLDocument2 *pDoc = ...;  //得到IHTMLDocument2指针
IHTMLElement *pBodyElement = NULL;
pDoc->get_body(&pBodyElement );
IHTMLElementRender *pRender =  NULL;
pBodyElement ->QueryInterface(IID_IHTMLElementRender, (void **) &pRender);
pBodyElement->DrawToDC(hImageDC);
2) HRESULT IViewObject::Draw( DWORD dwAspect, LONG lindex,  void * pvAspect, DVTARGETDEVICE * ptd, HDC hicTargetDev, HDC hdcDraw,  const LPRECTL lprcBounds,
const LPRECTL lprcWBounds, BOOL (*) (DWORD) pfnContinue, DWORD dwContinue )

 
代码示例:
IHTMLDocument2 *pDoc = ...;  //得到IHTMLDocument2指针
IViewObject* pViewObject = NULL;
pDoc->QueryInterface(IID_IViewObject, (void**)pViewObject);
pViewObject->(DVASPECT_CONTENT, 1, NULL, NULL, hScreenDC, hImageDC, rcSource, NULL, NULL, 0);

对比:
IHTMLElementRender::DrawToDC 参数比较简单,传入一个hImageDC就可以。其缺点就是只能画窗口可见部分的网页,想截图整个网页必须通过滚动网页再把截图拼接起来,或者把浏览器窗口变大到可以容下整个网页。 还有些情况就是当网页由frames 组成或者是个内嵌的doc/pdf文档,该可能会失败。
IViewObject::Draw 的参数复杂一些,但是在多数情况下都可以成功把整个网页的截图绘制出来,是首选方法。
本文转自 陈本峰 51CTO博客,原文链接:http://blog.51cto.com/wingeek/273609,如需转载请自行联系原作者

[IE编程] IE中对网页进行截图的编程接口相关推荐

  1. [IE编程] IE中使网页元素进入编辑模式

    IE的扩展HTML元素属性contentEditable 可以让该网页元素进入编辑模式. 很多基于Web所见即所得文字编辑器,或者软件中的所见即所得文字编辑器(比如邮件客户端的邮件编辑器,聊天工具的输 ...

  2. c语言编程过程中的常见错误,C语言编程常见错误与解决办法

    warning: excess elements in array initializer 警告:数组初始值设定项中有多余元素 (定义的数组长度比赋值的个数小) 数组定义出错 "confli ...

  3. AOP编程过程中的JoinPoint接口

    在AOP编程过程中需要使用到的一个 JoinPoint 接口,用来获取调用的信息,下面是这个接口的代码 // // Source code recreated from a .class file b ...

  4. JavaEE开发之Spring中的依赖注入与AOP编程

    上篇博客我们系统的聊了<JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建>,并在之前的博客中我们聊了依赖注入的相关东西,并且使用Objective-C的R ...

  5. 编程开发中最浪费时间和资源的7个错误

     编程开发中最浪费时间和资源的7个错误 我在当地几家公司担任过项目经理,项目主要关于一些用PHP制作的中小型网页.在那段历程中,我见识了很多公司常常会犯这样或那样的错误,既浪费时间又浪费资源.下面 ...

  6. 某个网页一直不停刷新_利用浏览器做网页长截图

    在平时写文章的时候,我经常需要插入一些截图,不知你有没有注意到,在能使用手机截图的情况下,我都尽量不在 PC 上进行截取操作. 其实有如下几个理由: 基于微信平台下,大多数用户使用手机进行阅读,在电脑 ...

  7. C++核心编程(中)

    C++核心编程(中) 1 内存分区模型 1.1 程序运行前 1.2 程序运行后 1.3 new操作符 2 引用 2.1 引用的基本使用 2.2 引用注意事项 2.3 引用做函数参数 2.4 引用做函数 ...

  8. Java之HTTP网络编程(下篇:网页浏览器程序设计)

    目录 一.本篇简介 二.URL类 三.基于URL类的网页下载 1.发送按钮 2.接收数据的多线程 四.URL网页下载客户端 五.编写web浏览器 1.WebEngine类 2.WebView类 3.W ...

  9. 学习编程过程中-->遇到的错误

    文章目录 学习编程过程中-->遇到的错误(吕招焕) 1.java.sql.SQLException: Parameter index out of range (2 > number of ...

最新文章

  1. MySQL学习笔记之启动停止与登录,显示相关信息
  2. XXL-CONF v1.4.1 发布,分布式配置管理平台
  3. Java中判断String对象是否为空的方法
  4. Kafka的基本介绍和在linux的安装配置
  5. vscode怎么写qt项目_使用VSCode 编译调试QT程序
  6. @query传参_vue-router中params传参和query传参的区别及处理方法
  7. JAVA获得天气json数据的方法,获取从天气预报接口返回回来的json数据
  8. 【JVM】通过javap命令分析Java汇编指令
  9. Mac OS修改VSCode Go的默认缩进格式
  10. 解密GaussDB(for Influx)时序洞察
  11. YUI Compressor Maven Plugin
  12. 校园网不能建立到远程计算机,校园网已拒绝远程连接是什么问题及如何解决
  13. X11-forwarding
  14. mysql双活多活部署_MySQL数据库之MySQL双活部署方案
  15. 【转载】如何打领带-普瑞特结
  16. 【华人学者风采】杨鸣波 四川大学
  17. 【架构设计】什么是CAP理论?
  18. 香港公司银行开户需要注意。
  19. 用Python的networkx绘制精美网络图
  20. Nodejs正则表达式

热门文章

  1. WEB开发实训教程(完整版)JAVA!!附下载链接
  2. python任务栏通知区域_python windows右下角消息提示
  3. 百炼智能店店通(餐饮版)亮相2021第二届食品饮料数字营销峰会
  4. HTML5:移动互联网时代的黑天鹅
  5. 苹果助手开发随笔系列:0、前言
  6. 手动清楚smsc病毒
  7. 利用sed命令插入文本
  8. 使用struts2框架中3种客户端向服务端发送请求参数的方式
  9. Oracle查询1个月内数据增长情况
  10. shell实现毫秒级时钟