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();
            }
        }
    }
    
  • 相关阅读:
    写个简单的搜索引擎
    C++中的三种继承关系
    《深度探索C++对象模型》调用虚函数
    一次数据库优化的对话
    读后感:你的灯亮着吗
    Linux Shell 截取字符串
    一次关于知识储备的思考
    哈夫曼树与哈夫曼编码
    二叉查找树
    jar中没有注清单属性
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204908.html
Copyright © 2011-2022 走看看