下面是我写的一个函数,把所有的缓存文件路径添加到一个字符串列表中,直接看代码,带了注释。另外还有删除缓存等等大家自己到msdn找找。

需要引用

  1. WinInet
  1. // 获取Internet缓存文件
  2. function GetCacheFilePath(): TStringList;
  3. var
  4. pEntryInfo: PInternetCacheEntryInfo;
  5. lCacheDir, lEntrySize, lLastError: Cardinal;
  6. bLoop: Boolean;
  7. begin
  8. Result := nil;
  9. // 获取缓冲区大小
  10. lEntrySize := 0;
  11. lCacheDir := FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^),
  12. lEntrySize);
  13. if lEntrySize = 0 then
  14. Exit;
  15. // 分配内存
  16. GetMem(pEntryInfo, lEntrySize);
  17. // 获取缓存文件
  18. lCacheDir := FindFirstUrlCacheEntry(nil, pEntryInfo^, lEntrySize);
  19. if lCacheDir = 0 then
  20. begin
  21. FreeMem(pEntryInfo, lEntrySize);
  22. Exit;
  23. end;
  24. Result := TStringList.Create;
  25. // 开始遍历
  26. while True do
  27. begin
  28. try
  29. Result.Add(string(StrPas(pEntryInfo^.lpszLocalFileName)));
  30. except
  31. end;
  32. // 释放内存
  33. FreeMem(pEntryInfo, lEntrySize);
  34. // 获取下一个缓冲区大小
  35. lEntrySize := 0;
  36. FindNextUrlCacheEntry(lCacheDir, TInternetCacheEntryInfo(nil^), lEntrySize);
  37. // 分配内存
  38. if GetLastError() = ERROR_INSUFFICIENT_BUFFER then
  39. GetMem(pEntryInfo, lEntrySize)
  40. else
  41. Break;
  42. // 下一个缓存文件
  43. FindNextUrlCacheEntry(lCacheDir, pEntryInfo^, lEntrySize);
  44. end;
  45. // 关闭缓存
  46. FindCloseUrlCache(lCacheDir);
  47. end;

http://blog.csdn.net/cwpoint/article/details/6438668

uses WinINet;

Function TForm1.GetCacheVerifyCodeFile(VerifyCodeURL:String; Var CacheVerifyCodeFile:String):Boolean;
Var
lpEntryInfo: PInternetCacheEntryInfo;
dwEntrySize, dwLastError, Hwd: LongWORD; 
i, j: Integer; 
f: String;
Begin
Result := false; 
dwEntrySize := 0; 
j := 0; 
CacheVerifyCodeFile := ''; 
FindFirstUrlCacheEntry(Nil, TInternetCacheEntryInfo(Nil^), dwEntrySize); 
GetMem(lpEntryInfo, dwEntrySize); 
Hwd := FindFirstUrlCacheEntry(Nil, lpEntryInfo^, dwEntrySize); 
If Hwd <> 0 Then 
Begin 
    Repeat 
      dwEntrySize := 0; 
      FindNextUrlCacheEntry(Hwd, TInternetCacheEntryInfo(Nil^), dwEntrySize); 
      dwLastError := GetLastError(); 
      If dwLastError = ERROR_INSUFFICIENT_BUFFER Then 
      Begin 
        GetMem(lpEntryInfo, dwEntrySize);
        If FindNextUrlCacheEntry(Hwd, lpEntryInfo^, dwEntrySize) Then
        begin
          If Pos(UpperCase(VerifyCodeURL), UpperCase(lpEntryInfo.lpszSourceUrlName)) > 0 Then
          Begin
            i := FileAge(lpEntryInfo.lpszLocalFileName);
            If i > j Then
            Begin
              j := i;
              f := lpEntryInfo.lpszLocalFileName;
            End
            Else
              DeleteUrlCacheEntry(lpEntryInfo.lpszSourceUrlName);
          End;
        end;
      End;
      Application.ProcessMessages;
    Until (dwLastError = ERROR_NO_MORE_ITEMS);

If FileExists(f) Then 
    Begin 
      CacheVerifyCodeFile := f;
      Result := true; 
    End; 
End;
FreeMem(lpEntryInfo);
FindCloseUrlCache(Hwd);
End;

可用于在缓存中的验证码图片,或者防盗链的图片的采集,嘿嘿。

此函数有两个参数,第一个是网络图片地址,第二个是本地缓存地址。第二个作为输出端口。

http://www.cnblogs.com/toosuo/archive/2010/09/02/1815583.html

Delphi 获取Internet缓存文件 -- FindFirstUrlCacheEntry FindNextUrlCacheEntry的更多相关文章

  1. 用程序获取 Internet 时间 无通用性程序后的暂用办法

    并不是完全失败,但没找到一个通用的办法,这个通用指的不能通用所有的时间服务器,而不是说操作系统. 网上的方案很多,有用Socket类.或TcpClient类(C#).或UdpClient类,端口有使用 ...

  2. Delphi 获取进程路径及命令行参数

    Delphi 获取进程路径及命令行参数, 但有的进程获取时会报错,不知为啥 type PVOID64 = UINT64; _UNICODE_STRING = packed record Length ...

  3. 随笔 - Internet缓存文件

    Internet缓存文件 本文地址: http://blog.csdn.net/caroline_wendy 互联网上全部的使用记录, 图片, 音乐, 视频, 都会缓存在本地. 1. 位置: IE-& ...

  4. delphi 获取硬盘序列号、cpu号、bios号、网卡号

    delphi 获取硬盘 序列号 function GetIdeNum: String; type TSrbIoControl = packed record HeaderLength : ULONG; ...

  5. Delphi 获取当前鼠标下的控件内容

    Delphi 获取当前鼠标下的控件内容 主要函数: GetCursorPos://获取鼠标的位置 WindowFromPoint://获取制定point下的handle GetClassName:// ...

  6. Delphi获取本机的MAC地址

    Delphi获取本机的MAC地址: uses   NB30; function GetAdaPterInfo(lana: Char): string; var   Adapter: TAdapterS ...

  7. Delphi获取其他exe程序版本号

    delphi获取Exe文件版本信息的函数 Type TFileVersionInfo = Record FixedInfo:TVSFixedFileInfo; {版本信息} CompanyName:S ...

  8. DELPHI获取宽带IP

    DELPHI获取宽带IP   DELPHI获取宽带IP procedure TForm1.Button1Click(Sender: TObject);varurl: string;beginurl : ...

  9. Delphi获取默认打印机名称及端口

    Delphi获取默认打印机名称及端口 在前段时间写的收银系统中由于目前市场上很多电脑主板上已经没有并口,而POS机却又需要并口,所以目前需要用PCI转接卡,这个就导致不同门店使用的端口就有可能不同,这 ...

随机推荐

  1. LeetCode OJ Basic Calculator II

    Basic Calculator II 题目 思路 和这个一样:Basic Calculator I 代码 class ExpressionTransformation { public: strin ...

  2. MDL--元数据锁的锁请求与锁等待+元数据锁类对象

    1 元数据锁的锁请求与锁等待     元数据锁在MySQL Server层,依照锁的状态被细分为两种.一种是已经施加的锁.一种是等待施加的锁即锁请求,这样被区分的原因,如MySQL对"cla ...

  3. bootstrap之Orientation

    Orientation 调整屏幕方向的操作. package io.appium.android.bootstrap.handler; import android.os.RemoteExceptio ...

  4. js37---Function.prototype

    //给函数的prototype新增名字为name,函数体为fn的函数 Function.prototype.method =function(name,fn){ this.prototype[name ...

  5. sqlserver存储过程实现多表分页

    if @PageIndex = 1 begin if @strWhere != ’’ set @strSQL = ’select top ’ + str(@PageSize) +’ ’+@strGet ...

  6. thinkphp5空控制器和空操作

    thinkphp5空控制器和空操作 一.总结 1.空控制器和空操作用:空控制器和空操作都是为了防止网站上的用户恶意输入,网站上线的话必须加上, 2.空操作:空操作就是在一般的控制器里面加上一个 _em ...

  7. Windows平台上的pip安装

    写在前面 pip 是 Python 的包管理工具,在 Python 开发中必不可少.作为一名python菜鸟,本文在踩坑无数的基础上尽可能详细地解释pip的安装过程.在安装之前需要明确两点: 1.pi ...

  8. Java Web学习总结(2)——Servlet入门

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  9. 使用knockout.js 完毕template binding

    //1.template <script id="txn-details-template" type="text/html"> <!--St ...

  10. ActiveX控件开发 C#

    转自:http://hi.baidu.com/charlesx_kst/item/9c2f42e2920db3f42b09a4ff 前言: 这段时间因为工作的需要,研究了一下ActiveX控件.总结如 ...