IE的BHO通过IHTMLDocument2接口获得网页源代码

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

ExtJs学习笔记(3)_GridPanel[XML做数据源]

这一节,将学习到除了用JSON做GridPanel的数据源外,还可以使用XML 一。静态示例 1.xml文件内容: <?xml version="1.0...

24480
来自专栏c#开发者

使用javascript+xml实现分页

今天才开通我的csdn blog,把俺以前的帖子拿出来和大家分享。 基于web的技术中,分页是一个老的不能再老的,但大家津津乐道的问题,随着xml技术的日渐应用...

37180
来自专栏岑玉海

Hbase 学习(二)补充 自定义filter

本来这个内容是不单独讲的,但是因为上一个页面太大,导致Live Writer死机了,不能继续编辑了,所以就放弃了 这里要讲的是自定义filter,从Filt...

39050
来自专栏C#

免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)

    在生活中有一种东西几乎已经快要成为我们的另一个电子”身份证“,那就是二维码。无论是在软件开发的过程中,还是在普通用户的日常中,几乎都离不开二维码。...

1.6K90
来自专栏飞扬的花生

表单样式简单设计

  虽然作为后端程序员,简单的CSS样式还是要会滴,备份下 1.直接贴代码吧: @{ ViewBag.Title = "Index"; Layo...

26660
来自专栏流浪猫的golang

MongoDB 中文的全文索引

MongoDB 从3.2 版本以后添加了对中文索引的支持: 官网链接:https://docs.mongodb.com/manual/reference/t...

40630
来自专栏用户2442861的专栏

Android游戏开发十日通(6)- 太空大战

http://blog.csdn.net/silangquan/article/details/16921035

15120
来自专栏Android干货园

一款基于Material Desgin设计的APP

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/50...

22710
来自专栏Rindew的iOS技术分享

iOS地图找房(类似链家、安居客等地图找房)

35460
来自专栏Android小菜鸡

Android语音录制,语音发送

这是一个录音的例子,可用于IM的语音发送,OA的语音留言等。 首先我们需要引入权限:

58120

扫码关注云+社区

领取腾讯云代金券