下面是我写的一个函数,把所有的缓存文件路径添加到一个字符串列表中,直接看代码,带了注释。另外还有删除缓存等等大家自己到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. Nginx系列(一)--nginx是什么?

    一.介绍 Nginx是一个高性能的HTTP和反向代理server,也是一个IMAP/POP3/SMTP代理server. Nginx是一款轻量级的Webserver/反向代理server以及电子邮件代 ...

  2. Leetcode:signal_number_ii

    一.     题目 给一个数组,当中仅仅有一个数出现一次.其它的数都出现3次,请找出这个数.要求时间复杂度是O(n).空间复杂度O(1). 二.     分析 第一次遇见这种题,真心没思路-.前面的s ...

  3. Spring中的AOP注解方式和XML方式

    应掌握内容:1. AOP的全名2. AOP的实现原理[静态代理和动态代理]3. 注解方式的配置4. 通知类型     A. 每种通知的特点和使用方式    B. 获取各种数据,方便日后操作5. 执行表 ...

  4. 使用C#对XML进行增删改查操作

    xml文件格式 <?xml version="1.0" encoding="utf-8"?> <messageList> <mes ...

  5. CISP/CISA 每日一题 16

    CISA 每日一题(答) 作业调度软件的优点: 1.作业信息仅需建立一次,减少错误发生概率: 2.可定义作业间的依赖关系,当某一项作业失败时,依赖于该作业的后续作业就不会被执行: 3.所有成功或失败的 ...

  6. HUSTOJ 1072 小数背包问题

    HUSTOJ 1072 小数背包问题 题目描述 有一个背包,背包容量是M(0<M≤500),有N(1<N≤1000)个物品,物品可以分割成任意大小. 要求尽可能让装入背包中的物品总价值最大 ...

  7. session应用二

    从session中获取mapper对象,利用mapper对象进行增删改查 Date now = new Date(); SqlSession session = this.yangchebaoDbMa ...

  8. mysql集群搭建教程-基础篇

           计算机一级考试系统要用集群,目标是把集群搭建起来,保证一个库dang了,不会影响程序的运行.于是在孟海滨师哥的带领下开始了我的第一次搭建mysql集群,首先看了一些关于集群的资料,然后根 ...

  9. 不重新启动VMWare虚拟机加入虚拟磁盘的方法(上)

    近期因为业务须要在不重新启动系统的前提下对系统进行扩容,前提是该系统做过lvm.可是没有足够的物理卷(硬盘),所以引出了改文.本文共分为上下两部分.这是第一部分. 文件夹 加入磁盘 做LVM 加入硬盘 ...

  10. setting.system-全局属性的设定

    SystemProperties跟Settings.System 1 使用 SystemProperties.get如果属性名称以“ro.”开头,那么这个属性被视为只读属性.一旦设置,属性值不能改变. ...