在客户端中使用webbrower控件,控件中已显示网页,对应的图片资源应已下载完,下面从缓存中找到图片资源,两种方法都可

1、GetUrlCacheEntryInfo

http://msdn.microsoft.com/en-us/library/aa384185(v=vs.85).aspx

2、FindFirstUrlCacheEntry、FindNextUrlCacheEntry、FindCloseUrlCache

http://msdn.microsoft.com/zh-SG/library/aa384026

void CTesthaijiaDlg::OnDocumentComplete(LPDISPATCH pDisp, LPCTSTR szUrl)
{
if (pDisp == m_pBrowserApp)
{
CString sCheckUrl(szUrl);
if (sCheckUrl.CompareNoCase(sLoginUrl) == )
{
if (m_spHtmlDoc)
{
CDispatch disp = m_spHtmlDoc;
disp.InvokePtr(L"getElementById", L"txtUserName").Put(L"value", L"abc");
disp.InvokePtr(L"getElementById", L"txtPassword").Put(L"value", L"abc"); CDispatch dispImg = disp.InvokePtr(L"getElementById", L"ValidIMG");
CString s = dispImg.Get(L"src");
if ()
{
LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL;
DWORD dwEntrySize = ;
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;
BOOL b = GetUrlCacheEntryInfo(s, lpCacheEntry, &dwEntrySize);
CString sPath = lpCacheEntry->lpszLocalFileName; RECT rc1;
SystemParametersInfo(SPI_GETWORKAREA,,(PVOID)&rc1,);
SetWindowPos(NULL, , rc1.bottom - , , , SWP_NOSIZE); CDlgCode dlg;
dlg.SetPath(sPath);
if (dlg.DoModal() == IDOK)
{
disp.InvokePtr(L"getElementById", L"txtIMGCode").Put(L"value", CComVariant(dlg.m_sCode));
disp.InvokePtr(L"getElementById", L"BtnLogin").Invoke(L"click");
SetWindowPos(NULL, , , , , SWP_NOSIZE);
}
}
if ()
{
LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL;
HANDLE hCacheDir = NULL;
DWORD dwTrySize, dwEntrySize = ;
DWORD dwError = ERROR_INSUFFICIENT_BUFFER;
BOOL bSuccess, bDone = FALSE; //是否已经处理完,初始设为false
while(!bDone){
switch(dwError){
case ERROR_INSUFFICIENT_BUFFER:
if(lpCacheEntry)
{
delete [] lpCacheEntry;
}
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;
dwTrySize = dwEntrySize;
if(!hCacheDir)
{//为空,说明第一次执行,需要找第一个
hCacheDir = FindFirstUrlCacheEntry(NULL,lpCacheEntry,&dwTrySize);
bSuccess = (hCacheDir != NULL);
}
else
{
bSuccess = FindNextUrlCacheEntry(hCacheDir,lpCacheEntry,&dwTrySize);
}
if(!bSuccess){
dwError = GetLastError();
dwEntrySize = dwTrySize; //使用得到的新长度
}
else
{
dwError = ERROR_SUCCESS;
}
break;
//we are done
case ERROR_NO_MORE_ITEMS:
bDone = TRUE;
break;
//we have got an entry
case ERROR_SUCCESS:
if(bSuccess && (NORMAL_CACHE_ENTRY & lpCacheEntry->CacheEntryType))
{ //
CString sUrl1 = lpCacheEntry->lpszSourceUrlName;
if (sUrl1.Compare(s) == )
{
//处理
}
// CTime lastModified(lpCacheEntry->LastModifiedTime);
// CTime lastAccessed(lpCacheEntry->LastAccessTime);
//a changed cookie - delete it!
// if(lastModified >= m_time || lastAccessed >= m_time){
//const CString name = lpCacheEntry->lpszSourceUrlName;
//const CString result = lastModified.Format("%I:%M:%S%p %d %b %Y");
//MessageBox (NULL, name + " last modified " + result, "Deleting cookie", MB_OK);
//DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName);
}
//get ready for next entry
dwTrySize = dwEntrySize;
if(!FindNextUrlCacheEntry(hCacheDir,lpCacheEntry,&dwTrySize))
{
dwError = GetLastError();
dwEntrySize = dwTrySize; //使用得到的新长度
}
else
{
dwError = ERROR_SUCCESS;
}
break;
//unknown error
default:
CString strError; strError.Format(_T("There is an error (%d) when trying deleting temporary internet files.\r\n"), dwError);
TRACE(strError);
bDone = TRUE;
break;
if(bDone)
break;
Sleep(); if(lpCacheEntry){ delete [] lpCacheEntry; lpCacheEntry = NULL;}
if(hCacheDir){ FindCloseUrlCache(hCacheDir); hCacheDir = NULL;}
break;
}
}
}
}
}
} CDHtmlDialog::OnDocumentComplete(pDisp, szUrl);
}

WebBrowser中取对应的图片资源的更多相关文章

  1. 在webBrowser中取Cookie的方法

    在很多情况下我们会使用间进程的webBrowser去实现一些网页的请求和抓去,这个时候有部分网页是取不到Cookie的,那怎么办呢?下面我提供一个方法,应该99%的都能取到, //取当前webBrow ...

  2. WinForm使用webbrowser爬取数据,中文乱码问题

    使用winform中的webbrowser抓取某个网站的数据时,遇到中文乱码的问题: 当时使用的获取网页内容的代码为: webBrowser1.DocumentText.ToString(); 不管我 ...

  3. 关于delphi点击webbrowser中任意一点的问题

    关于delphi点击webbrowser中任意一点的问题 有时候我们需要delphi载入webbrowser1打开网页的时候 需要点击某一个点的位置 可能是坐标 可能是按钮 可能是其他的控件应该如何来 ...

  4. C#:WebBrowser中伪造referer,为何对流量统计器无效?

    使用webbrowser伪造referer的方法:webBrowser1.Navigate(url, "_self", null, "Referer:http://www ...

  5. 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表

    最近项目中有一种需求: 大致需求是这样的 通过给定的 用户名和密码 要定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表 项目的结构式struts1 hibernat ...

  6. LoadRunner中取Request、Response

    LoadRunner中取Request.Response LoadRunner两个“内置变量”: 1.REQUEST,用于提取完整的请求头信息. 2.RESPONSE,用于提取完整的响应头信息. 响应 ...

  7. C#之桶中取黑白球问题

    <编程之美>284页,问题4.6:桶中取黑白球. 有一个桶,里面有白球.黑球各100个,人们必须按照以下规则把球取出来: 1. 每次从桶中拿两个球: 2. 如果两球同色,再放入一个黑球: ...

  8. DataGrid中取HyperLinkColumn列的值,处理DataGrid中绑定的特殊字符

    DataGrid中取HyperLinkColumn列的值. /// <summary> /// 对datagrid中标签进行编码,处理特殊字符 /// </summary> / ...

  9. 【算法与数据结构】在n个数中取第k大的数(基础篇)

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 题目介绍            在n个数中取第k大的数(基础篇),之所以叫基础篇是因为还有很多更高级的算法,这些 ...

随机推荐

  1. mac qq截图功能失效后,如何重启截图功能?

    在finder中打开应用程序目录,找到QQ,右键单击QQ,选择显示包内容,此时会打开一个文件夹. 进入以下路径Library/LoginItems然后双击ScreenCapture这个进程,截图功能即 ...

  2. python产生随机名字

    用到random.choice(序列) 在一个序列中随机选取一个值 import random as r a1=['张','金','李','王','赵'] a2=['玉','明','龙','芳','军 ...

  3. Monkey and Banana(HDU 1069 动态规划)

    Monkey and Banana Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  4. ps存jpeg,格式保存的时候为什么选择“基线”

    jpeg是印前和网页设计常用的格式,最大好处就是能很大程度上压缩图像大小. 在ps中将图片保存为jpeg格式的时候会出现以下选项: 其中:图像选项都很熟悉,是关于图像质量的:而格式选项的用途主要是针对 ...

  5. (转)syslog日志等级

    设施.优先级”(facility.priority)设施(facility): kern 0 内核日志消息 user 1 随机的用户日志消息 mail 2 邮件系统日志消息 daemon 3 系统守护 ...

  6. LeetCode_Valid Palindrome

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  7. CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?

    https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...

  8. 数据结构之单链表,c#实现

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. 使用jQuery来检测远程图片文件是否存在

    使用jQuery来检测远程图片文件是否存在 最近为我的憨豆人笑园添加图片功能时,遇到了这个问题,用户可以填写一个远程的图片地址,也可以上传一个本地图片.为了不浪费服务器的资源,我们需要在客户端先对用户 ...

  10. cookielib模块基础学习

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' import cookielib #主要用于处理http客户端的co ...