using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace ConsoleApplication34 { class Program { [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public struct internet_cache_entry_info { public int dwstructsize; public IntPtr lpszsourceurlname; public IntPtr lpszlocalfilename; public int cacheentrytype; public int dwusecount; public int dwhitrate; public int dwsizelow; public int dwsizehigh; public FILETIME lastmodifiedtime; public FILETIME expiretime; public FILETIME lastaccesstime; public FILETIME lastsynctime; public IntPtr lpheaderinfo; public int dwheaderinfosize; public IntPtr lpszfileextension; public int dwexemptdelta; } [DllImport("wininet.dll", SetLastError = true, CharSet = CharSet.Auto)] public static extern IntPtr FindFirstUrlCacheEntry([MarshalAs(UnmanagedType.LPTStr)] string urlsearchpattern, IntPtr lpfirstcacheentryinfo, ref int lpdwfirstcacheentryinfobuffersize); [DllImport("wininet.dll", SetLastError = true, CharSet = CharSet.Auto)] public static extern bool GetUrlCacheEntryInfo([MarshalAs(UnmanagedType.LPTStr)] string lpszurlname, IntPtr lpcacheentryinfo, ref int lpdwcacheentryinfobuffersize); public static string getcatchfilename(string url) { int nneeded = 0, nbufsize = 0; IntPtr buf = IntPtr.Zero; FindFirstUrlCacheEntry(null, IntPtr.Zero, ref nneeded); nbufsize = nneeded; buf = Marshal.AllocHGlobal(nbufsize); internet_cache_entry_info cacheitem; GetUrlCacheEntryInfo(url, buf, ref nneeded); cacheitem = (internet_cache_entry_info)Marshal.PtrToStructure(buf, typeof(internet_cache_entry_info)); string res = Marshal.PtrToStringAuto(cacheitem.lpszlocalfilename); return (res); } static void Main(string[] args) { string str = getcatchfilename("http://profile.csdn.net/jinjazz/picture/2.jpg"); Console.WriteLine(str); Console.Read(); } } }
Wininetdll函数库:根据url获取缓存文件
最新推荐文章于 2024-07-23 08:57:01 发布