一种是使用易语言自带的命令(简单直接),另一种是调用Windows API(更底层、更灵活)。

易语言网页_删除ie缓存文件
(图片来源网络,侵删)

使用易语言“删除目录”命令(推荐,最简单)

这种方法最简单,直接利用易语言提供的“删除目录”命令,它会清空指定目录下的所有文件和子文件夹。

核心原理:

  1. 获取当前用户的IE缓存目录路径。
  2. 使用“删除目录”命令清空该路径下的所有内容。
  3. (可选)重新创建一个空的缓存目录,因为有些程序可能依赖这个目录存在。

完整代码示例:

.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 ie缓存路径, 文本型
' 获取IE缓存路径
ie缓存路径 = 取IE缓存目录路径 ()
' 判断路径是否有效
.(ie缓存路径 ≠ "")
    信息框 (“正在删除IE缓存...” + #换行 + “路径: ” + ie缓存路径, 0, , )
    ' 删除缓存目录下的所有内容
    ' 注意:删除目录会清空整个目录,包括所有子文件夹和文件
    删除目录 (ie缓存路径, , 假)
    ' 删除后,可以尝试重新创建一个空目录,避免某些程序出错
    ' 创建目录 (ie缓存路径)
    信息框 (“IE缓存删除成功!”, 0, , )
.否则
    信息框 (“无法获取IE缓存路径!请检查您的系统设置。”, 16, , )
.结束如果
' 结束程序
关闭窗口_启动窗口 ()
' =================================================================
' 自定义子程序:获取IE缓存目录路径
' 返回值:文本型,返回缓存路径,如果失败则返回空文本
' =================================================================
.子程序 取IE缓存目录路径, 文本型
    .局部变量 缓存路径, 文本型
    .局部变量 临时路径, 文本型
    ' 获取当前用户的临时文件夹路径,通常是 C:\Users\[用户名]\AppData\Local\Microsoft\Windows\INetCache
    临时路径 = 取运行环境目录 (#临时环境)
    ' 拼接出IE缓存的具体路径
    ' 注意:不同Windows版本,路径可能略有不同,但INetCache是通用目录
    缓存路径 = 临时路径 + “\INetCache”
    ' 返回拼接好的路径
    返回 (缓存路径)

代码解析:

易语言网页_删除ie缓存文件
(图片来源网络,侵删)
  1. .子程序 取IE缓存目录路径:这是一个自定义子程序,用于获取IE缓存的路径,我们通过获取系统临时目录(#临时环境),然后拼接上 \INetCache 来得到最终路径,这是最可靠的方式之一。
  2. 删除目录 (ie缓存路径, , 假):这是核心命令。
    • ie缓存路径:要删除的目录。
    • 第二个参数(是否递归)可以省略,默认为真,表示删除目录及其所有内容。
    • 第三个参数 :表示不将文件放入回收站,直接物理删除,这比放入回收站更彻底。
  3. 注意:直接删除 INetCache 目录可能会导致一些IE或依赖IE内核的程序在下次启动时重新创建它,这是正常现象,如果你发现某些程序异常,可以取消注释 创建目录 (ie缓存路径) 这行代码。

调用Windows API(更底层、更灵活)

如果你不想删除整个目录,而是想只删除特定类型的缓存文件(只删除图片或Cookie),或者需要更精细的控制,那么使用API是更好的选择。

核心原理:

  1. 使用 SHGetFolderPath API 函数获取IE缓存的确切路径。
  2. 遍历该目录下的所有文件。
  3. 对每个文件,根据其名称或扩展名判断是否需要删除。
  4. 使用 DeleteFile API 函数删除选定的文件。

完整代码示例:

.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 ie缓存路径, 文本型
.局部变量 文件列表, 文本型, , "0"
.局部变量 i, 整数型
' 定义API函数和常量
.版本 2
.DLL命令 SHGetFolderPathA, , shell32.dll, , 整数型
    .参数 hwnd, 整数型
    .参数 csidl, 整数型
    .参数 hToken, 整数型
    .参数 dwFlags, 整数型
    .参数 pszPath, 文本型
.常量 CSIDL_INTERNET_CACHE = &H20
.版本 2
.DLL命令 DeleteFileA, , kernel32.dll, , 逻辑型
    .参数 lpFileName, 文本型
' 获取IE缓存路径
ie缓存路径 = 取IE缓存路径_API ()
.(ie缓存路径 ≠ "")
    信息框 (“正在使用API方式删除IE缓存...” + #换行 + “路径: ” + ie缓存路径, 0, , )
    ' 获取目录下所有文件
    文件列表 = 目录_取文件列表 (ie缓存路径, , , )
    ' 遍历文件列表
.计次循环首 (取数组成员数 (文件列表), i)
    ' 在这里可以添加判断条件,只删除特定文件
    ' 只删除以 "Cookie" 开头的文件
    ' .(寻找文本 (文件列表 [i], "Cookie", , 假) > 0)
    '     删除文件 (ie缓存路径 + "\" + 文件列表 [i])
    ' .否则如果 (寻找文本 (文件列表 [i], "index.dat", , 假) > 0)
    '     ' index.dat文件可能正在被系统使用,直接删除可能会失败
    '     ' 可以尝试强制删除,但这里为了安全,我们跳过
    '     跳出循环 ()
    ' .否则
    '     ' 删除其他所有文件
    '     删除文件 (ie缓存路径 + "\" + 文件列表 [i])
    ' .如果结束
    ' 为了演示,我们删除所有文件(除了可能正在使用的)
    .(文件列表 [i] ≠ "index.dat")
        删除文件 (ie缓存路径 + "\" + 文件列表 [i])
    .否则
        ' 使用API尝试删除正在使用的文件(需要管理员权限,且不一定成功)
        ' DeleteFileA (ie缓存路径 + "\" + 文件列表 [i])
    .如果结束
.计次循环尾 ()
信息框 (“IE缓存文件删除完成!”, 0, , )
.否则
    信息框 (“无法通过API获取IE缓存路径!”, 16, , )
.结束如果
' 结束程序
关闭窗口_启动窗口 ()
' =================================================================
' 自定义子程序:使用API获取IE缓存目录路径
' =================================================================
.子程序 取IE缓存路径_API, 文本型
    .局部变量 路径缓冲区, 文本型
    .局部变量 返回值, 整数型
    ' 创建一个足够大的缓冲区来接收路径
    路径缓冲区 = 取空白文本 (260)
    ' 调用API获取路径
    ' 参数说明:
    ' hwnd=0 (桌面窗口), CSIDL_INTERNET_CACHE, hToken=0, dwFlags=0
    返回值 = SHGetFolderPathA (0, CSIDL_INTERNET_CACHE, 0, 0, 路径缓冲区)
    ' 如果API调用成功 (返回值为0)
    .(返回值 = 0)
        返回 (路径缓冲区)
    .否则
        返回 ("")
    .如果结束

代码解析:

易语言网页_删除ie缓存文件
(图片来源网络,侵删)
  1. API定义
    • SHGetFolderPathA:这是获取特殊文件夹路径的标准Windows API。CSIDL_INTERNET_CACHE 是我们需要的常量,代表“Internet Cache”。
    • DeleteFileA:标准的Windows API,用于删除一个文件。
  2. 获取路径取IE缓存路径_API 子程序调用 SHGetFolderPathA 来精确获取缓存路径。
  3. 遍历和删除
    • 目录_取文件列表:获取缓存目录下的所有文件名。
    • .计次循环首...循环尾:遍历每一个文件。
    • 条件判断:代码中包含了注释掉的判断逻辑,展示了如何只删除特定文件(如Cookie),你可以根据自己的需求修改这个判断条件。
    • index.dat 文件:这是一个非常重要的系统文件,用于记录索引信息,它通常正在被系统使用,直接删除会失败,上面的代码跳过了它,这是比较安全的做法,如果你想强制删除,可以尝试调用 DeleteFileA,但需要管理员权限且不保证成功。

总结与建议

特性 方法一 (删除目录) 方法二 (调用API)
优点 代码极简,执行速度快,功能强大,一劳永逸。 灵活可控,可以精确删除特定类型的文件,保留其他缓存。
缺点 “一刀切”,会删除所有缓存文件,无法筛选。 代码复杂,需要处理API声明和文件遍历逻辑,且可能无法删除正在使用的系统文件。
适用场景 绝大多数情况,需要彻底清空缓存时。 需要精细化管理缓存,例如只清除Cookie或图片,保留页面脚本等。

给初学者的建议:

直接使用方法一,它简单、高效、可靠,能满足99%的清除IE缓存的需求,只有当你发现需要更精细的控制时,再去学习和使用方法二。