获取IE缓存中的文件(验证码图片)

hnyztzh 2014-08-21 12:16:30
请教一个问题:
用windows API: FindFirstUrlCacheEntry、FindNextUrlCacheEntry 读取IE缓存,在IE缓存中获取不到网页的验证码图片文件, 我用httpwatch能抓取到验证码图片的URL。
不知道是什么原因获取不到验证码图片? 请大牛帮忙指点如何解决获取不到验证码图片的问题!
或者说图片文件是以其他方式读取的?
代码如下:
HANDLE hCacheEnumHandle  = NULL;
LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL;
DWORD dwTrySize = 0; //initial buffer size
DWORD dwEntrySize= 8192; //initial buffer size

// Delete index.dat if requested.
// Be sure that index.dat is not locked.

// Enable initial buffer size for cache entry structure.
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;
dwTrySize = dwEntrySize;

// URL search pattern (1st parameter)
// options are: NULL ("*.*"), "cookie:"
// or "visited:".
hCacheEnumHandle = FindFirstUrlCacheEntry(NULL /* in */ ,
lpCacheEntry /* out */,
&dwTrySize /* in, out */);

// First, obtain handle to internet cache
// with FindFirstUrlCacheEntry
// for later use with FindNextUrlCacheEntry.
if (hCacheEnumHandle == NULL)
{
CString str;
str.Format("error=%d\n",GetLastError());
MessageBox(str,"1111111",MB_OKCANCEL);

if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
delete [] lpCacheEntry;
dwEntrySize = dwTrySize;
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;

hCacheEnumHandle = FindFirstUrlCacheEntry(NULL, lpCacheEntry , &dwTrySize);
}
else
{
goto ENDOF;
}
}


if (hCacheEnumHandle)
{
TRACE("%s\n",lpCacheEntry->lpszSourceUrlName);
// if (strcmp(lpCacheEntry->lpszSourceUrlName,pszSrc) == 0)
// {
// CopyFile(lpCacheEntry->lpszLocalFileName,pszDst,FALSE);
// goto ENDOF;
// }
}

// Next, use hCacheEnumHandle obtained
// from the previous step to delete
// subsequent items of cache.
while(TRUE)
{
// Notice that return values of FindNextUrlCacheEntry (BOOL) and
// FindFirstUrlCacheEntry (HANDLE) are different.
dwTrySize = dwEntrySize;
BOOL bReturn = FindNextUrlCacheEntry(hCacheEnumHandle, lpCacheEntry, &dwTrySize);


if (!bReturn)
{
CString str;
str.Format("error=%d\n",GetLastError());
MessageBox(str,"1111111",MB_OKCANCEL);


if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
delete [] lpCacheEntry;
dwEntrySize = dwTrySize;
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
lpCacheEntry->dwStructSize = dwEntrySize;
bReturn = FindNextUrlCacheEntry(hCacheEnumHandle, lpCacheEntry, &dwTrySize);
}
else
{
break;
}
}

if (bReturn)
{
TRACE("%s\n",lpCacheEntry->lpszSourceUrlName);
// if (strcmp(lpCacheEntry->lpszSourceUrlName,pszSrc) == 0)
// {
// CopyFile(lpCacheEntry->lpszLocalFileName,pszDst,FALSE);
// break;
// }
}

} ;


ENDOF:

if (lpCacheEntry) delete [] lpCacheEntry;
if (hCacheEnumHandle) FindCloseUrlCache(hCacheEnumHandle);
...全文
210 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yofoo 2014-08-21
  • 打赏
  • 举报
回复
直接用url下载就可以了 验证码图片一般设定不缓存

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧