参考了凤之焚的专栏:http://blog.csdn.net/lion_wing/article/details/769742

但是他的源码有些问题,即IHTMLElementCollection接口的item应该填写正确的序列号,而不是0。

item序列号递增是深度优先的遍历标签,不明白的可以试一下,也就是说如果只用0序列号的话获得的是<!Document>的标签,1才是<html>标签内容,他俩是并列的。我这里是IE11做的实验,博主当年发文的时候不知道情况怎么样……

另外注意要使用IHTMLElement的outerHTML,innerHTML只会获得标签里的内容,不包含标签。

int detect_AppCache(IHTMLDocument2* pDocument)
{
CComPtr<IHTMLElementCollection> spHTML;
HRESULT hr = pDocument->get_all(&spHTML);
long length = 0;
spHTML->get_length(&length); if (hr == S_OK && spHTML != NULL) {
for (int i = 0; i < length ; i++){//注意一下,这里i=1就可以获得普遍意义的所有源代码
CComVariant svarIndex = i;
CComVariant svarEmpty;
CComPtr<IDispatch> spDisp; hr = spHTML->item(svarIndex, svarEmpty, &spDisp);
if ( SUCCEEDED(hr) ) {
CComQIPtr<IHTMLElement> spElement = spDisp;
if (spElement) {
CComBSTR bstrHTML;
spElement->get_outerHTML(&bstrHTML);
USES_CONVERSION;
CString ret = COLE2T(bstrHTML);
if (ret.Find(_T("appcache")) != -1) {
MessageBox(NULL, L"he", L"detect_AppCache", MB_OK); }
MessageBox(NULL, ret, L"detect_AppCache", MB_OK);
} } else {
MessageBox(NULL, L"获取IDispatch失败", L"detect_AppCache", MB_ABORTRETRYIGNORE);
}
}
}
return 0;
}

IE的BHO通过IHTMLDocument2接口获得网页源代码的更多相关文章

  1. 如何使用Fiddler抓取APP接口和微信授权网页源代码

    Fiddler,一个抓包神器,不仅可以通过手机访问APP抓取接口甚至一些数据,还可以抓取微信授权网页的代码. 下载安装 1. 下载地址(官网):  https://www.telerik.com/do ...

  2. Java 网络爬虫获取网页源代码原理及实现

    Java 网络爬虫获取网页源代码原理及实现 1.网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL ...

  3. php查看网页源代码的方法

    这篇文章主要介绍了php查看网页源代码的方法,涉及php读取网页文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php查看网页源代码的方法.分享给大家供大家参考.具体实现 ...

  4. c#利用WebClient和WebRequest获取网页源代码的比较

    前几天举例分析了用asp+xmlhttp获取网页源代码的方法,但c#中一般是可以利用WebClient类和WebRequest类获取网页源代码.下面分别说明这两种方法的实现. WebClient类获取 ...

  5. delphi 获取网页源代码

    //获取网页源代码 var   s: string; begin   s := WebBrowser1.OleObject.document.body.innerHTML; //body内的所有代码 ...

  6. JS远程获取网页源代码的例子

    js代码获取网页源代码. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> < ...

  7. 如何在ios手机端的Safari浏览器 中“查看网页源代码”

    在这里给大家分享一个很简单的用苹果手机无需越狱就可以查看网页源代码的方法,不过这个方法只用于苹果手机自带的Safari浏览器 随便添加一个safari 书签 (用于一会改为查看源码功能书签)进入书签 ...

  8. c#利用WebClient和WebRequest获取网页源代码

    C#中一般是可以利用WebClient类和WebRequest类获取网页源代码.下面分别说明这两种方法的实现.   WebClient类获取网页源代码   WebClient类   WebClient ...

  9. c#利用HttpWebRequest获取网页源代码

    c#利用HttpWebRequest获取网页源代码,搞了好几天终于解决了,直接获取网站编码进行数据读取,再也不用担心乱码了! 命名空间:Using System.Net private static ...

随机推荐

  1. ubuntu系统安装和配置

    1.分区信息 1.1 /boot分区 这个分区包括了操作系统的内核和在启动系统过程中所要用到的文件.假设有了一个单独的/boot启动分区,即使基本的根分区出现了问题,计算机依旧可以启动.这个分区的大小 ...

  2. [Angular] Dynamic components with ComponentFactoryResolver

    To create a component dynamicly. 1. Add a container with ref: @Component({ selector: 'app-root', tem ...

  3. 【NOIP2012提高组】国王游戏 贪心 + 高精度

    题目分析 题目答案不具有单调性,所以不可以二分,转而思考贪心.因为无法确定位置,所以考虑如何才能让对于每一个$1 ~ i$使得$i$的答案最大,即$1 ~ i$最后一个最优.若设对于位置$i$,$a[ ...

  4. React Native细节记录

    1.环境搭建部分 安装完node后建议设置npm镜像以加速后面的过程(或使用***工具).注意:不要使用cnpm!cnpm安装的模块路径比较奇怪,packager不能正常识别! npm config ...

  5. 【BZOJ 2534】Uva10829L-gap字符串

    [链接]h在这里写链接 [题意]     让你找出uvu形式的字符串个数.     v非空且长度为L,且u也非空 [题解]     之前做过一道相同的题.     枚举u的长度.     然后从u,2 ...

  6. iOS的安全性和越狱

    提到越狱,很多人第一反应大概是免费的游戏和 app. 作为软件从业人员,深知中国的大环境的特殊性.内有用户想吃免费午餐的不良付费习惯,外有行业内大头诸如某讯对创新的绞杀.大家对越狱是为了免费.盗版软件 ...

  7. TextView和EditText中添加图片(ImageSpan)

    编辑框中加图片,以前一直以为很复杂,后来发现android有些类已经很好的实现了这些功能. 代码如下: [java] view plaincopy mSubjectDetailView = (Text ...

  8. jQuery分离构造器

    http://www.imooc.com/code/3401 通过new操作符构建一个对象,一般经过四步: A.创建一个新对象   B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象) ...

  9. C#常用多线程方法

    1.  Thread类 C#多线程编程中Thread类需要包含名称空间System.Threading. class Program { static void Main(string[] args) ...

  10. WPF模拟Office2010文件菜单的TabControl模板

    原文:WPF模拟Office2010文件菜单的TabControl模板 这是Office2010中的文件菜单点开后的效果.本文我将以强大的WPF(www.itstrike.cn)来实现类似的效果.希望 ...