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

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