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();
            }
        }
    }
    
  • 相关阅读:
    mysql备份还原
    matlab学习笔记一
    tic和toc用来记录matlab命令执行的时间
    Flume的JVM优化策略
    Linux中的grep -R命令详解
    Hadoop集群Unhealthy Nodes导致计算能力下降解决方法 (nodemanager处于Unhealthy Nodes)
    Java匿名内部类详解
    Error:java: Compilation failed: internal java compiler error 解决办法
    java基础知识体系
    使用flink SQL对接kafka 时,日志不报错,也没有数据输出,原因有哪几个方面
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204908.html
Copyright © 2011-2022 走看看