如何清除应用程序承载 WebBrowser 控件时缓存
http://support.microsoft.com/kb/262110/zh-cn 察看本文应用于的产品
注意:这篇文章是由无人工介入的自动的机器翻译系统翻译完成。这些文章是微软为不懂英语的用户提供的, 以使他们能够理解这些文章的内容。微软不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的使用所引起的任何直接的, 或间接的可能的问题负责。
文章编号 |
: |
262110 |
---|---|---|
最后修改 |
: |
2007年3月29日 |
修订 |
: |
3.1 |
概要
当应用程序承载 WebBrowser 控件, 可能需要以编程方式清除缓存。 通过 WebBrowser 控件的接口没有此功能。 本文解释如何使用 WinInet API 函数以直接清除缓存。
更多信息
使用 WinInet API FindFirstURLCacheEntry 来找到第一缓存条目和 FindNextUrlCacheEntry 用于列举缓存。 使用 DeleteUrlCacheEntry 来删除每个条目。 注意 FindFirstUrlCacheGroup DeleteUrlCacheGroup FindNextUrlCacheGroup, 以及正在使用下例中。 这些 API 函数以便正确检查作为显示需要防止错误有只成为用 Internet Explorer 5。 在下面步骤介绍如何在 VisualBasic 中使用 WinInet API 来清除缓存中所有文件。
1. |
新建一个 VisualBasic 标准 EXE 项目。 |
---|---|
2. |
创建 form 1 下一个命令按钮。 |
3. |
以下代码粘贴到模块是 form 1: Option Explicit Private Declare Function FindFirstUrlCacheGroup Lib "wininet.dll" ( _ ByVal dwFlags As Long, _ ByVal dwFilter As Long, _ ByRef lpSearchCondition As Long, _ ByVal dwSearchCondition As Long, _ ByRef lpGroupId As Date, _ ByRef lpReserved As Long) As Long Private Declare Function FindNextUrlCacheGroup Lib "wininet.dll" ( _ ByVal hFind As Long, _ ByRef lpGroupId As Date, _ ByRef lpReserved As Long) As Long Private Declare Function DeleteUrlCacheGroup Lib "wininet.dll" ( _ ByVal sGroupID As Date, _ ByVal dwFlags As Long, _ ByRef lpReserved As Long) As Long Private Declare Function FindFirstUrlCacheEntry Lib "wininet.dll" Alias "FindFirstUrlCacheEntryA" ( _ ByVal lpszUrlSearchPattern As String, _ ByRef lpFirstCacheEntryInfo As INTERNET_CACHE_ENTRY_INFO, _ ByRef lpdwFirstCacheEntryInfoBufferSize As Long) As Long Private Type INTERNET_CACHE_ENTRY_INFO dwStructSize As Long szRestOfData(1024) As Long End Type Private Declare Function DeleteUrlCacheEntry Lib "wininet.dll" Alias "DeleteUrlCacheEntryA" ( _ ByVal lpszUrlName As Long) As Long Private Declare Function FindNextUrlCacheEntry Lib "wininet.dll" Alias "FindNextUrlCacheEntryA" ( _ ByVal hEnumHandle As Long, _ ByRef lpNextCacheEntryInfo As INTERNET_CACHE_ENTRY_INFO, _ ByRef lpdwNextCacheEntryInfoBufferSize As Long) As Long Private Const CACHGROUP_SEARCH_ALL = &H0 Private Const ERROR_NO_MORE_FILES = 18 Private Const ERROR_NO_MORE_ITEMS = 259 Private Const CACHEGROUP_FLAG_FLUSHURL_ONDELETE = &H2 Private Const BUFFERSIZE = 2048 Private Sub Command1_Click() Dim sGroupID As Date Dim hGroup As Long Dim hFile As Long Dim sEntryInfo As INTERNET_CACHE_ENTRY_INFO Dim iSize As Long On Error Resume Next ' Delete the groups hGroup = FindFirstUrlCacheGroup(0, 0, 0, 0, sGroupID, 0) ' To avoid error using it with IE4 as FindFirstUrlCacheGroup is not implemented If Err.Number <> 453 Then If (hGroup = 0) And (Err.LastDllError <> 2) Then MsgBox "An error occurred enumerating the cache groups" & Err.LastDllError Exit Sub End If Else Err.Clear End If If (hGroup <> 0) Then 'we succeeded in finding the first cache group.. enumerate and 'delete Do If (0 = DeleteUrlCacheGroup(sGroupID, CACHEGROUP_FLAG_FLUSHURL_ONDELETE, 0)) Then ' To avoid error using it with IE4 as FindFirstUrlCacheGroup is not implemented If Err.Number <> 453 Then MsgBox "Error deleting cache group " & Err.LastDllError Exit Sub Else Err.Clear End If End If iSize = BUFFERSIZE If (0 = FindNextUrlCacheGroup(hGroup, sGroupID, iSize)) And (Err.LastDllError <> 2) Then MsgBox "Error finding next url cache group! - " & Err.LastDllError End If Loop Until Err.LastDllError = 2 End If ' Delete the files sEntryInfo.dwStructSize = 80 iSize = BUFFERSIZE hFile = FindFirstUrlCacheEntry(0, sEntryInfo, iSize) If (hFile = 0) Then If (Err.LastDllError = ERROR_NO_MORE_ITEMS) Then GoTo done End If MsgBox "ERROR: FindFirstUrlCacheEntry - " & Err.LastDllError Exit Sub End If Do If (0 = DeleteUrlCacheEntry(sEntryInfo.szRestOfData(0))) _ And (Err.LastDllError <> 2) Then Err.Clear End If iSize = BUFFERSIZE If (0 = FindNextUrlCacheEntry(hFile, sEntryInfo, iSize)) And (Err.LastDllError <> ERROR_NO_MORE_ITEMS) Then MsgBox "Error: Unable to find the next cache entry - " & Err.LastDllError Exit Sub End If Loop Until Err.LastDllError = ERROR_NO_MORE_ITEMS done: MsgBox "cache cleared" Command1.Enabled = True End Sub |
4. |
运行项目并单击 Command 。 计算机中缓存将被清除。 |
- java: web应用中不经意的内存泄露
- velocity模板引擎学习(4)-在standalone的java application中使用velocity及velocity-tools
- mac上开启ftp
- Web前端开发的四个阶段
- 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus
- 关于把本地应用封装成windows app发布审核通不过的问题
- java并发编程学习:用 Semaphore (信号量)控制并发资源
- java并发编程学习: ThreadLocal使用及原理
- 使用Autofac IOC组织多项目应用程序
- 国内首个“人工智能与变革管理研究院”成立
- 解决WordPress缩略图插件timthumb不支持站外图片的问题
- 让 http 2来得更猛烈些吧
- SQL Server 2008基于策略的管理
- centos系统安装Python
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于Spring Boot快速实现发送邮件功能
- 史上最全的vim快捷键文档/手册/大全/帮助/指南
- RPC详解
- 轻松学Pytorch – 行人检测Mask-RCNN模型训练与使用
- Linux的文本处理工具浅谈-awk sed grep
- 这样Review代码牛逼啦!
- FinDOM-XSS:一款针对DOM型XSS漏洞的快速扫描工具
- 使用Pycharm和跳板机 连接内网服务器
- CVE-2020-1313漏洞分析与利用PoC
- Linux用户登录日志查询 # 1 utmp、wtmp、btmp文件
- 浏览器同域名请求的最大并发数限制
- HTTP Strict Transport Security实战详解
- 深夜学算法之SkipList:让链表飞
- 自研安全工具之网页全链接爬取
- 实战远程文件同步(Remote File Sync)