专栏首页听雨堂如何清除应用程序承载 WebBrowser 控件时缓存

如何清除应用程序承载 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 条评论
登录 后参与评论

相关文章

  • VB6对滚轮的支持

            我需要对Mapx控件支持鼠标滚轮,找了一个可以使用的代码,来自         http://blog.csdn.net/areful/arch...

    用户1075292
  • VB实现半透明或者部分透明窗体

            Windows2000已经出了n年多了,就先介绍一下Windows2000特有的API吧!! AnimateWindow是一个窗口打开和关闭...

    用户1075292
  • mapx实现热点效果

            当鼠标移动到图元上方时,标注改变样式(变色,加下划线等),移开后还原。通过vb+mapx基本实现这个效果,但由于mapx在label进行变化时的...

    用户1075292
  • VBA使用API_02:遍历文件

    Dir方法是VBA里封装好了的,但是对于判段是否是文件夹并没有很好的方法,一般是利用文件名是否包含“.”来判断,但这个是很不严谨的。

    xyj
  • JPA 原生CRUD 语句

    @Modifying @Query(value = "delete from t_sys_org_user where org_id=?1 and user_...

    一个会写诗的程序员
  • VB.NET 文件操作类和示例程序。textbox和listbox联动搜索

    ''' <param name="文件路径">必填:文件路径</param>

    巴西_prince
  • 巧用CSS3 :target 伪类制作Dropdown下拉菜单(无JS)

    :target 是CSS3 中新增的一个伪类,用以匹配当前页面的URI中某个标志符的目标元素(比如说当前页面URL下添加#comment就会定位到id=“com...

    Jeff
  • 【Flutter 专题】30 图解自定义底部状态栏 ACEBottomNavigationBar (一)

    和尚刚接触 Flutter 时接触到底部状态栏 BottomNavigationBar 方便快捷,但随着使用过程发现依然有一些限制,包括图片选择/样...

    阿策
  • 官宣:广东中小学开学时间出炉 腾讯复学码护航师生安全返校

    ? 刚刚,广东省中小学开学时间正式官宣: 4月27日,全省高三、初三年级学生返校; 5月11日后,将分批安排中小学 其他年级学生返校。 为确保广东百万中小学生...

    鹅老师
  • 基于pytest集成selenium

    基于pytest集成selenium 什么是pytest pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点 : 简单灵活,容易上手 ...

    苦叶子

扫码关注云+社区

领取腾讯云代金券