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

    前言 : 先说说这个 CLH锁: 加锁 1. 创建一个的需要获取锁的 Node 2. 通过 CAS操作 让自己 成为这个尾部的节点,然后令 设置自己的pre 3. 自旋,直到pre节点释放 释放: 1 ...

  2. css 兼容性前缀

    一.不同浏览器内核下的书写规则 二:transform  具体变性中心基点  transform-origin  默认情况下  rotate旋转.scale缩放.translate位移.矩阵matri ...

  3. ps的入门

    ps的入门 http://www.cnblogs.com/qingci/archive/2012/09/20/2694728.html

  4. Java Web学习总结(6)——通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 package gacl.res ...

  5. 很吊炸天的Xcode插件,你想要的这都有

    整理自BigPolarBear的博客 .杂技杂记  以及CC此前整理. 古人云"工欲善其事必先利其器",打造一个强大的开发环境.是马上提升自身战斗力的绝佳途径!下面是搜集的一些有力 ...

  6. POJ 1274 The Perfect Stall || POJ 1469 COURSES(zoj 1140)二分图匹配

    两题二分图匹配的题: 1.一个农民有n头牛和m个畜栏,对于每个畜栏,每头牛有不同喜好,有的想去,有的不想,对于给定的喜好表,你需要求出最大可以满足多少头牛的需求. 2.给你学生数和课程数,以及学生上的 ...

  7. 11.5 Android显示系统框架_Vsync机制_黄油计划_三个方法改进显示系统

    5. Vsync机制5.1 黄油计划_三个方法改进显示系统vsync, triple buffering, vsync虚拟化 参考文档:林学森 <深入理解Android内核设计思想>第2版 ...

  8. 常用到的Linux命令

    记录一下日常用到的Linux命令,就当做日志了 1.查看Linux 端口号  netstat -apn | grep 80 2.杀死进程   kill -s 9 pid (tomcat 启动不起来有可 ...

  9. ORACLE RMAN备份--差异增量与累积增量的策略实例图

    转自原文 ORACLE RMAN备份--差异增量与累积增量的策略实例图

  10. HDU2438 Turn the corner【三分法】【数学几何】

    Turn the corner Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...