如何清除应用程序承载 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 。 计算机中缓存将被清除。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)

      林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka

19220
来自专栏闻道于事

商城项目整理(四)JDBC+富文本编辑器实现商品增加,样式设置,和修改

UEditor富文本编辑器:http://ueditor.baidu.com/website/ 相应页面展示: 商品添加: ? 商品修改: ? 前台商品展示...

68340
来自专栏xingoo, 一个梦想做发明家的程序员

【Spring实战】—— 14 传统的JDBC实现的DAO插入和读取

从这篇开始学习Spring的JDBC,为了了解Spring对于JDBC的作用,先通过JDBC传统的流程,实现一个数据库的插入和读取。 从这篇你可以了解到:...

22480
来自专栏Jerry的SAP技术分享

使用Excel调用ABAP系统的函数

效果:在excel里创建一个按钮,开发一些VB script,可以连接指定的ABAP系统并执行系统里的ABAP function module。

36470
来自专栏ImportSource

初体验Spring Boot 2支持的HikariCP连接池

Hikari,没错,听着就不像英文,是一句日语,最初是由一个居住在日本的老外开发的一款数据库连接池。 (这单词怎么读呢?hi·ka·'lē。注意最后的ri读成l...

66080
来自专栏Kubernetes

kube-proxy源码分析

##kube-proxy介绍 请参考我的另一篇博文:kube-proxy工作原理 ##源码目录结构分析 cmd/kube-proxy //负责kub...

77350
来自专栏nice_每一天

spring+spring mvc+mybatis 实现主从数据库配置

@DataSourceChange(slave = true)只对service(业务)层起作用。

18530
来自专栏闻道于事

JavaWeb(四)JDBC操作Oracle

JDBC:Java DataBase Connectivity(java数据库连接) SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范...

49940
来自专栏跟着阿笨一起玩NET

C#如何快速高效地导出大量数据?

本文转载:http://www.cnblogs.com/herbert/archive/2010/07/28/1787095.html

46510
来自专栏码匠的流水账

聊聊eureka的delta配置

eureka-client-1.8.8-sources.jar!/com/netflix/discovery/DiscoveryClient.java

10810

扫码关注云+社区

领取腾讯云代金券