zoukankan      html  css  js  c++  java
  • Wininetdll函数库:根据url获取缓存文件

    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();
            }
        }
    }
    
  • 相关阅读:
    用于图片处理的10个超级jQuery插件
    [VS2010].NET4.0环境下使用.NET2.0程序集,出现“混合模式程序集异常”
    对企业虚拟化应用的一些感受[原创]
    留学生不回国:中国物价超美国 没车没房没尊严!
    Research Assembly Setting!
    [转] 微软的软件测试方法(附读后感)
    应用 ZedGraph
    [转] LOGIGEAR SECURITY POLICIES
    一道程序运行结果题
    VS05 与 VS08并存时编译出现 The binding handle is invalid.
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204908.html
Copyright © 2011-2022 走看看