因为浏览器网页缓存文件的特殊性,用程序读取缓存内容要颇费些周折。
个人因为项目需要,要有个读取浏览器缓存的功能,在网上找了一下,有个例程。方向方法是对的。但是语焉不详,给出的说明很不清晰。
让我Try个好苦,不过最终还是Try出来了。在此分享给大家。
前提需要include名为Wininet.h头文件,然后#pragma comment(lib,"Wininet.lib").
int _tmain(int argc, _TCHAR* argv[])
{
wchar_t* IMG_PATH = _T("http://news.ifeng.com/a/20141011/42173581_0.shtml");
wchar_t* OUT_PATH = _T("E:\\out.txt");
DWORD dwEntrySize = 0;
LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry;
if (!GetUrlCacheEntryInfo(IMG_PATH, NULL, &dwEntrySize))
{
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
return -1;
else
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO)new BYTE[dwEntrySize];
if (GetUrlCacheEntryInfo(IMG_PATH, lpCacheEntry, &dwEntrySize))
{
{
::CopyFile(lpCacheEntry->lpszLocalFileName,
OUT_PATH,
FALSE
);
}
}
delete lpCacheEntry;
}
return 0;
}
注意:IMG_PATH变量是要读取的缓存文件的名称。
找到缓存文件夹右键属性,赋值URL即可