IE的BHO通过IHTMLDocument2接口获得网页源代码
2024-09-21 09:55:49
参考了凤之焚的专栏: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;
}
最新文章
- 应用OpenMP的一个简单的设计模式
- 用python实现逻辑回归
- substr()函数
- iis浏览网页时提示无法显示 XML 页
- iOS 获取已连接的wifi信息
- AndroidUniversalImageLoader网络图片加载
- 【最大流之EdmondsKarp算法】【HDU1532】模板题
- docker-gitlab(转)
- 创建GitHub技术博客
- OGRE HelloWorld
- FatMouse and Cheese 动态化搜索
- angular嵌入注入服务实例
- windows配置caffe + python和matlab接口
- Git 忽略特定文件或文件夹
- web安全系列4:google语法
- java实现wc.exe
- how to build an app with github
- WebAPI MVC Change Identity Default Table
- mongodb管理与安全认证
- HDU 3336 Count the string(next数组运用)
热门文章
- Kolya and Tandem Repeat
- PHP移动互联网开发笔记(1)——环境搭建及配置
- [Typescript] What is a Function Type ? Function Types and Interfaces - Are They Related ?
- Go语言:正則表達式的使用
- js进阶 10-9 -of-type型子元素伪类选择器
- 【u109】数字生成游戏(gen)
- 一道SQL题考你数据库的使用能力
- Swagger 专题
- Python 第三方库的安装
- 【u114】旅行计划(12月你好)