如何清除应用程序承载 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 。 计算机中缓存将被清除。
时间: 2024-08-30 06:12:04

如何清除应用程序承载 WebBrowser 控件时缓存的相关文章

使用WebBrowser控件时在网页元素上绘制文本或其他自定义内容

原文:使用WebBrowser控件时在网页元素上绘制文本或其他自定义内容     第一次在CNBlogs上发Post是提出一个有关使用WebBrowser控件时对SELECT网页元素操作的疑惑,这个问题至今也没有解决,后来有朋友在该Post的评论里询问WebBrowser控件如何在网页元素上绘制文本的问题--但是由于我的懒惰,竟然已有半年时间没有浏览过自己的Blog,因此没有看到这位朋友的评论而不能及时提供回答,真是愧疚.       大家都见过VS.NET的WebForm设计器,当我们在设计器

文档-编写一个java程序,将webbrowser控件嵌入进去

问题描述 编写一个java程序,将webbrowser控件嵌入进去 用java语言编写一个程序实现从网页中找到文档链接并下载和删除.拜托各位啦 解决方案 http://blog.csdn.net/b_h_l/article/details/8266899

解决WebBrowser控件会导致应用程序占用内存居高不下问题

今天发现刚写的WinForm应用程序占用内存不正常,经分析测试发现是由于多次创建WebBrowser控件导致,为了便于说明问题,下边是简化后的代码: Form1.cs:   public partial class Form1 : Form {     public Form1()     {         InitializeComponent();     }     private void button1_Click(object sender, EventArgs e)     {

用C#和microsoft webbrowser控件创建自己的ie

web|webbrowser控件|创建 运行本例程需要 VS.net 2003 装有ie browser    如何简单的创建自己的ie浏览器?Mircosoft提供了一个COM组件供我们使用,此组件是一个AtiveX控件,实际上很多多窗口浏览器比如myie.te都是用了此控件.下面说说如何在C#里面使用它. 创建一个窗口运用程序 右击工具箱某一选项卡>添加/移除项...>COM组件>选中"Microsoft Web Browser"控件.       3.按确定后控

WebBrowser控件捕捉DHTML事件

dhtml|web|webbrowser控件 作者:Tuenhai.com MSN: king#tuenhai.com 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 http://www.Tuenhai.com/ 开发工具:Microsoft Visual Studio .NET 2003 操作系统:Windows XP 原文:http://www.devx.com/vb2themax/tip/18798 和其他控件一样,我们可以用WebBrowser控件来

在MFC应用中深入定制WebBrowser控件(转)

web|webbrowser控件 正如VC ++ 6.0的演示程序MFCIE所示,用应用程序向导创建一个具有Web导航能力的MFC应用可谓轻而易举.本文在此基础上,进一步讨论两个问题:资源自包含的实现,上下文菜单以及快捷键的完全控制. 一.资源自包含及res协议 所谓的资源自包含,指的是在最终产品中HTML文档(包括相关资源如脚本.图片)成为执行文件的一部分,就象其它资源(如应用程序图标)一样,而不是以独立文件形式分发. 资源自包含不仅使产品分发更为方便,而且在最终用户面前隐藏了更多的实现细节,

在VB中使用IE的 WebBrowser控件改进界面设计

web|webbrowser控件|设计 在VB中使用IE的 WebBrowser控件 改进界面设计 在程序设计中,如何设计出美观.实用,有个性的界面是每个程序设计者在界面设计中追求的目标.随着Windows XP的推出,各种与众不同的华丽界面越来越被程序设计者和软件使用者所认同. 利用Windows中的WebBrowser控件,可以把华丽的网页设计技术应用到界面设计中去,例如微软著名的MSN浏览器的许多界面其实就是一个Web页,Windows XP中的帮助中心.Microsoft Encarta

浅析c#中WebBrowser控件的使用方法

以下是对c#中WebBrowser控件的使用方法进行了详细的分析介绍,需要的朋友参考下   首先先来简单介绍一下webbrowser控件,这个控件是可以实现在form窗体中添加网页内容的.如图,我在form中加入了百度api,(百度地图api调用博客里有讲) 使用这个控件其实很简单 (1)第一步只要在form_load中输入 复制代码 代码如下: webBrowser1.Navigate(Application.StartupPath + " /map.html");//引号中为网页代

C# webBrowser控件在IE8的电脑上网页显示不完整

问题描述 C# webBrowser控件在IE8的电脑上网页显示不完整 如题, 电脑上装IE8,窗体上有个webBrowser控件,在打开一些网页的时候,总是显示不完整,商品图片总是显示不出来,可能是一些框架没有显示出来, 有人说写入注册表 FEATURE_SCRIPTURL_MITIGATION 项里加程序名字,我测试了也还是不行,郁闷坏了 http://detail.tmall.com/item.htm?id=40565789131&ad_id=&am_id=&cm_id=14