zoukankan      html  css  js  c++  java
  • C# 读取IE缓存文件(1)

    using System;
    using System.Runtime.InteropServices;
    
    namespace Common
    {
      public  class IECache
        {
            [DllImport("Wininet.dll", SetLastError = true, CharSet = CharSet.Auto)]
            public static extern Boolean GetUrlCacheEntryInfo(String lpxaUrlName, IntPtr lpCacheEntryInfo, ref int lpdwCacheEntryInfoBufferSize);
            const int ERROR_FILE_NOT_FOUND = 0x2;
            struct LPINTERNET_CACHE_ENTRY_INFO
            {
                public int dwStructSize;
                IntPtr lpszSourceUrlName;
                public IntPtr lpszLocalFileName;
                int CacheEntryType;
                int dwUseCount;
                int dwHitRate;
                int dwSizeLow;
                int dwSizeHigh;
                FILETIME LastModifiedTime;
                FILETIME Expiretime;
                FILETIME LastAccessTime;
                FILETIME LastSyncTime;
                IntPtr lpHeaderInfo;
                int dwheaderInfoSize;
                IntPtr lpszFileExtension;
                int dwEemptDelta;
            }
            // 返回 指定URL文件的缓存在本地文件系统中的路径
            public string GetPathForCachedFile(string fileUrl)
            {
                int cacheEntryInfoBufferSize = 0;
                IntPtr cacheEntryInfoBuffer = IntPtr.Zero;
                int lastError; Boolean result;
                try
                {
                    result = GetUrlCacheEntryInfo(fileUrl, IntPtr.Zero, ref cacheEntryInfoBufferSize);
                    lastError = Marshal.GetLastWin32Error();
                    if (result == false)
                    {
                        if (lastError == ERROR_FILE_NOT_FOUND) 
                            return null;
                    }
                    cacheEntryInfoBuffer = Marshal.AllocHGlobal(cacheEntryInfoBufferSize);
                    result = GetUrlCacheEntryInfo(fileUrl, cacheEntryInfoBuffer, ref cacheEntryInfoBufferSize);
                    lastError = Marshal.GetLastWin32Error();
                    if (result == true)
                    {
                        Object strObj = Marshal.PtrToStructure(cacheEntryInfoBuffer, typeof(LPINTERNET_CACHE_ENTRY_INFO));
                        LPINTERNET_CACHE_ENTRY_INFO internetCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO)strObj;
                        String localFileName = Marshal.PtrToStringAuto(internetCacheEntry.lpszLocalFileName); return localFileName;
                    }
                    else 
                        return null;// file not found
                }
                finally
                {
                    if (!cacheEntryInfoBuffer.Equals(IntPtr.Zero)) 
                        Marshal.FreeHGlobal(cacheEntryInfoBuffer);
                }
            }
        }
    }

    只能获取 类似 http://www.baidu.com/img/baidu_jgylogo3.gif 这样的图片 

  • 相关阅读:
    并查集
    贪心
    分治
    二分
    操作系统基础知识--《操作系统原理(第4版)(普通高等教育"十一五"国家级规划教材)》读书笔记
    《自控力》读书记录
    计算机组成原理基础知识--《计算机组成原理与汇编语言程序设计(第4版)(高等学校规划教材)》读书笔记
    ansible自动部署模板文件中列表长度判断
    《股市稳赚》摘录
    yarn学习小结
  • 原文地址:https://www.cnblogs.com/simadi/p/4164512.html
Copyright © 2011-2022 走看看