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.youkuaiyun.com/jinjazz/picture/2.jpg");
Console.WriteLine(str);
Console.Read();
}
}
}
Wininetdll函数库:根据url获取缓存文件
最新推荐文章于 2021-11-18 13:52:34 发布
本文介绍了一个使用 C# 编写的程序,该程序通过调用 WinINET DLL 中的方法来查找并返回指定 URL 在本地缓存中的文件名。此程序利用了 internet_cache_entry_info 结构体来获取缓存项信息。
3651

被折叠的 条评论
为什么被折叠?



