2007-04-19
怎么清理缓存文件?
在IE缓存目录中积累着很多的文件, 这些文件虽然可以提高浏览旧网页的速度,但是对磁盘空间的占用也与时俱进。对于爱“干净”的人,总觉得有点得不偿失。下面就贴出清理缓存的源码,清理缓存的方法有很多,这里介绍的是通过IEmptyVolumeCacheCallBack接口实现的例子。 新建工程,引用 b (可以从建一个类,名称:IETempClear粘贴如下源码:Option ExplicitImplements IEmptyVolumeCacheCallBackPrivate Const IID_IEmptyVolumeCache = "{8FCE5227-04DA-11d1-A...全部
在IE缓存目录中积累着很多的文件, 这些文件虽然可以提高浏览旧网页的速度,但是对磁盘空间的占用也与时俱进。对于爱“干净”的人,总觉得有点得不偿失。下面就贴出清理缓存的源码,清理缓存的方法有很多,这里介绍的是通过IEmptyVolumeCacheCallBack接口实现的例子。
新建工程,引用 b (可以从 建一个类,名称:IETempClear粘贴如下源码:Option ExplicitImplements IEmptyVolumeCacheCallBackPrivate Const IID_IEmptyVolumeCache = "{8FCE5227-04DA-11d1-A004-00805F8ABE06}"Private Const CLSID_TemporaryCleaner = "{9B0EFD60-F7B0-11D0-BAEF-00C04FC308C9}" '临时文件Private Const CLSID_OffLineCleaner = "{8E6E6079-0CB7-11D2-8F10-0000F87ABD16}" '脱机文件Private TemporaryFiles As IEmptyVolumeCache '临时文件Private OffLinePages As IEmptyVolumeCache '脱机文件Private Const HKEY_OFFLINE_PAGES = "Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Offline Pages Files"Private Const HKEY_TEMPORARY = "Software\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Internet Cache Files"Private Const HKEY_LOCAL_MACHINE = &H80000002Private Declare Function RegOpenKeyEx Lib "advapi32。
dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As LongPrivate Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As LongPrivate mSize As CurrencyProperty Get SpaceSize() As LongSpaceSize = mSizeEnd Property'根据GUID实例化清理器对象Private Function CreateCleaner(ByVal GUID As String) As IEmptyVolumeCacheDim CLSID As UUID, IID As UUIDDim Unknown As IUnknownCLSIDFromString GUID, CLSIDCLSIDFromString IID_IEmptyVolumeCache & vbNullChar, IIDCoCreateInstance CLSID, Unknown, CLSCTX_INPROC_SERVER, IID, CreateCleanerEnd FunctionPublic Sub StarClear()OffLinePages。
Purge mSize / 10000, MeTemporaryFiles。Purge mSize / 10000, MeEnd Sub' 初始化清理器对象Private Sub InitializeCleaners()Dim Name As Long, Desc As Long, Flags As LongDim hKey As Long, Drive As String, PIDL As Long'获得临时文件所在驱动器Drive = Space$(260)PIDL = SHGetSpecialFolderLocation(0, CSIDL_INTERNET_CACHE)SHGetPathFromIDList PIDL, DriveDrive = Left$(Drive, 3)CoTaskMemFree PIDL'脱机If RegOpenKeyEx(HKEY_LOCAL_MACHINE, HKEY_OFFLINE_PAGES, 0&, KEY_ALL_ACCESS, hKey) = 0 ThenOffLinePages。
Initialize hKey, Drive, Name, Desc, FlagsCoTaskMemFree NameCoTaskMemFree DescRegCloseKey hKeyEnd If'临时If RegOpenKeyEx(HKEY_LOCAL_MACHINE, HKEY_TEMPORARY, 0&, KEY_ALL_ACCESS, hKey) = 0 ThenTemporaryFiles。
Initialize hKey, Drive, Name, Desc, FlagsCoTaskMemFree NameCoTaskMemFree DescRegCloseKey hKeyEnd IfEnd SubPrivate Sub Class_Initialize()Dim Size As CurrencySet OffLinePages = CreateCleaner(CLSID_OffLineCleaner)Set TemporaryFiles = CreateCleaner(CLSID_TemporaryCleaner)Call InitializeCleanersTemporaryFiles。
GetSpaceUsed Size, MemSize = Size * 10000OffLinePages。GetSpaceUsed Size, MemSize = mSize + (Size * 10000)End SubPrivate Sub Class_Terminate()Dim Flags As LongOffLinePages。
Deactivate FlagsTemporaryFiles。Deactivate FlagsSet OffLinePages = NothingSet TemporaryFiles = NothingEnd SubPrivate Sub IEmptyVolumeCacheCallBack_PurgeProgress(ByVal dwlSpaceFreed As Currency, ByVal dwlSpaceToFree As Currency, ByVal dwFlags As olelib。
IEmptyVolumeCacheCallBackFlags, ByVal pcwszStatus As Long)'End SubPrivate Sub IEmptyVolumeCacheCallBack_ScanProgress(ByVal dwlSpaceUsed As Currency, ByVal dwFlags As olelib。
IEmptyVolumeCacheCallBackFlags, ByVal pcwszStatus As Long)'End Sub使用方法:Private Sub Command1_Click()Dim IEClear As New IETempClearMsgBox "IE缓存占用空间: " & IEClear。
SpaceSize & " 字节。"IEClear。StarClearSet IEClear = NothingEnd Sub。收起