CString GetCacheFilePath(LPCSTR resUrl)
{
	CString sUrl = resUrl;

	int shartPos = sUrl.Find("#");
	if (shartPos != -1)
	{
		sUrl = sUrl.Mid(0, shartPos);
	}

	sUrl.Replace("&", "&");

	CString sCacheFilePath = "";
	DWORD dwEntrySize = 0;
	BOOL bGet = GetUrlCacheEntryInfo(sUrl, NULL, &dwEntrySize);
	if (!bGet)
	{
		if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
		{
			return sCacheFilePath;
		}

		LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new BYTE[dwEntrySize];
		if (GetUrlCacheEntryInfo(sUrl, lpCacheEntry, &dwEntrySize))
		{
			sCacheFilePath = lpCacheEntry->lpszLocalFileName;
		}
		delete lpCacheEntry;
	}

	return sCacheFilePath;
}

URL与本地缓存文件的映射关系实际存储在index.dat中,系统提供的 GetUrlCacheEntryInfo 可以读取。


本文链接地址: 在 IE 控件中获取缓存文件的本地路径
https://blog.qingfengju.com/index.asp?id=440

上一篇: uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)"解决办法
下一篇: SetPixel 速度极慢的处理方法

分类:Win32/C++ 查看次数:5948 发布时间:2020/9/14 17:03:27