首页 > 代码库 > C# 读取IE缓存文件(1)
C# 读取IE缓存文件(1)
using System;using System.Runtime.InteropServices;namespace Common{ public class IECache { [DllImport("Wininet.dll", SetLastError = true, CharSet = CharSet.Auto)] public static extern Boolean GetUrlCacheEntryInfo(String lpxaUrlName, IntPtr lpCacheEntryInfo, ref int lpdwCacheEntryInfoBufferSize); const int ERROR_FILE_NOT_FOUND = 0x2; struct LPINTERNET_CACHE_ENTRY_INFO { public int dwStructSize; IntPtr lpszSourceUrlName; public IntPtr lpszLocalFileName; int CacheEntryType; int dwUseCount; int dwHitRate; int dwSizeLow; int dwSizeHigh; FILETIME LastModifiedTime; FILETIME Expiretime; FILETIME LastAccessTime; FILETIME LastSyncTime; IntPtr lpHeaderInfo; int dwheaderInfoSize; IntPtr lpszFileExtension; int dwEemptDelta; } // 返回 指定URL文件的缓存在本地文件系统中的路径 public string GetPathForCachedFile(string fileUrl) { int cacheEntryInfoBufferSize = 0; IntPtr cacheEntryInfoBuffer = IntPtr.Zero; int lastError; Boolean result; try { result = GetUrlCacheEntryInfo(fileUrl, IntPtr.Zero, ref cacheEntryInfoBufferSize); lastError = Marshal.GetLastWin32Error(); if (result == false) { if (lastError == ERROR_FILE_NOT_FOUND) return null; } cacheEntryInfoBuffer = Marshal.AllocHGlobal(cacheEntryInfoBufferSize); result = GetUrlCacheEntryInfo(fileUrl, cacheEntryInfoBuffer, ref cacheEntryInfoBufferSize); lastError = Marshal.GetLastWin32Error(); if (result == true) { Object strObj = Marshal.PtrToStructure(cacheEntryInfoBuffer, typeof(LPINTERNET_CACHE_ENTRY_INFO)); LPINTERNET_CACHE_ENTRY_INFO internetCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO)strObj; String localFileName = Marshal.PtrToStringAuto(internetCacheEntry.lpszLocalFileName); return localFileName; } else return null;// file not found } finally { if (!cacheEntryInfoBuffer.Equals(IntPtr.Zero)) Marshal.FreeHGlobal(cacheEntryInfoBuffer); } } }}
只能获取 类似 http://www.baidu.com/img/baidu_jgylogo3.gif 这样的图片
C# 读取IE缓存文件(1)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。