参考了凤之焚的专栏: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;
}

最新文章

  1. 应用OpenMP的一个简单的设计模式
  2. 用python实现逻辑回归
  3. substr()函数
  4. iis浏览网页时提示无法显示 XML 页
  5. iOS 获取已连接的wifi信息
  6. AndroidUniversalImageLoader网络图片加载
  7. 【最大流之EdmondsKarp算法】【HDU1532】模板题
  8. docker-gitlab(转)
  9. 创建GitHub技术博客
  10. OGRE HelloWorld
  11. FatMouse and Cheese 动态化搜索
  12. angular嵌入注入服务实例
  13. windows配置caffe + python和matlab接口
  14. Git 忽略特定文件或文件夹
  15. web安全系列4:google语法
  16. java实现wc.exe
  17. how to build an app with github
  18. WebAPI MVC Change Identity Default Table
  19. mongodb管理与安全认证
  20. HDU 3336 Count the string(next数组运用)

热门文章

  1. Kolya and Tandem Repeat
  2. PHP移动互联网开发笔记(1)——环境搭建及配置
  3. [Typescript] What is a Function Type ? Function Types and Interfaces - Are They Related ?
  4. Go语言:正則表達式的使用
  5. js进阶 10-9 -of-type型子元素伪类选择器
  6. 【u109】数字生成游戏(gen)
  7. 一道SQL题考你数据库的使用能力
  8. Swagger 专题
  9. Python 第三方库的安装
  10. 【u114】旅行计划(12月你好)