请登录[¤ 阳光论坛 ¤]参与讨论


阳光宝宝
90

 □ 主题: VB 清除IE的所有缓存和Cookies
 □ 内容: 1楼

      IE的缓存和Cookies,可以通过WinInet.dll库中的函数来进行操作的 
      如果要查找所有的缓存和Cookies,需要使用FindFirstUrlCacheEntry和FindNextUrlCacheEntry这两个函数 
      如果要删除相对应的缓存和Cookies,就使用DeleteUrlCacheEntry函数 
        
      源代码如下: 
        
      Option Explicit 
       
      Private Const ERROR_CACHE_FIND_FAIL As Long = 0 
      Private Const ERROR_CACHE_FIND_SUCCESS As Long = 1 
      Private Const ERROR_FILE_NOT_FOUND As Long = 2 
      Private Const ERROR_ACCESS_DENIED As Long = 5 
      Private Const ERROR_INSUFFICIENT_BUFFER As Long = 122 
      Private Const MAX_PATH As Long = 260 
      Private Const MAX_CACHE_ENTRY_INFO_SIZE As Long = 4096 
       
      Private Const LMEM_FIXED As Long = &H0 
      Private Const LMEM_ZEROINIT As Long = &H40 
      Private Const LPTR As Long = (LMEM_FIXED Or LMEM_ZEROINIT) 
       
      Private Const NORMAL_CACHE_ENTRY As Long = &H1 
      Private Const EDITED_CACHE_ENTRY As Long = &H8 
      Private Const TRACK_OFFLINE_CACHE_ENTRY As Long = &H10 
      Private Const TRACK_ONLINE_CACHE_ENTRY As Long = &H20 
      Private Const STICKY_CACHE_ENTRY As Long = &H40 
      Private Const SPARSE_CACHE_ENTRY As Long = &H10000 
      Private Const COOKIE_CACHE_ENTRY As Long = &H100000 
      Private Const URLHISTORY_CACHE_ENTRY As Long = &H200000 
      Private Const URLCACHE_FIND_DEFAULT_FILTER As Long = NORMAL_CACHE_ENTRY Or _ 
       COOKIE_CACHE_ENTRY Or _ 
       URLHISTORY_CACHE_ENTRY Or _ 
       TRACK_OFFLINE_CACHE_ENTRY Or _ 
       TRACK_ONLINE_CACHE_ENTRY Or _ 
       STICKY_CACHE_ENTRY 
      Private Type FILETIME 
       dwLowDateTime As Long 
       dwHighDateTime As Long 
      End Type 
       
      Private Type INTERNET_CACHE_ENTRY_INFO 
       dwStructSize As Long 
       lpszSourceUrlName As Long 
       lpszLocalFileName As Long 
       CacheEntryType As Long 
       dwUseCount As Long 
       dwHitRate As Long 
       dwSizeLow As Long 
       dwSizeHigh As Long 
       LastModifiedTime As FILETIME 
       ExpireTime As FILETIME 
       LastAccessTime As FILETIME 
       LastSyncTime As FILETIME 
       lpHeaderInfo As Long 
       dwHeaderInfoSize As Long 
       lpszFileExtension As Long 
       dwExemptDelta As Long 
      End Type 
       
      Private Declare Function FindFirstUrlCacheEntry Lib "wininet" _ 
       Alias "FindFirstUrlCacheEntryA" _ 
       (ByVal lpszUrlSearchPattern As String, _ 
       lpFirstCacheEntryInfo As Any, _ 
       lpdwFirstCacheEntryInfoBufferSize As Long) As Long 
       
      Private Declare Function FindNextUrlCacheEntry Lib "wininet" _ 
       Alias "FindNextUrlCacheEntryA" _ 
       (ByVal hEnumHandle As Long, _ 
       lpNextCacheEntryInfo As Any, _ 
       lpdwNextCacheEntryInfoBufferSize As Long) As Long 
       
      Private Declare Function FindCloseUrlCache Lib "wininet" _ 
       (ByVal hEnumHandle As Long) As Long 
       
      Private Declare Function DeleteUrlCacheEntry Lib "wininet" _ 
       Alias "DeleteUrlCacheEntryA" _ 
       (ByVal lpszUrlName As String) As Long 
        
      Private Declare Sub CopyMemory Lib "kernel32" _ 
       Alias "RtlMoveMemory" _ 
       (pDest As Any, _ 
       pSource As Any, _ 
       ByVal dwLength As Long) 
       
      Private Declare Function lstrcpyA Lib "kernel32" _ 
       (ByVal RetVal As String, ByVal Ptr As Long) As Long 
        
      Private Declare Function lstrlenA Lib "kernel32" _ 
       (ByVal Ptr As Any) As Long 
        
      Private Declare Function LocalAlloc Lib "kernel32" _ 
       (ByVal uFlags As Long, _ 
       ByVal uBytes As Long) As Long 
        
      Private Declare Function LocalFree Lib "kernel32" _ 
       (ByVal hMem As Long) As Long 
        
       
        
       
       
      Public Sub DeleteCacheURLList() 
        
       Dim icei As INTERNET_CACHE_ENTRY_INFO 
       Dim hFile As Long 
       Dim cachefile As String 
       Dim posUrl As Long 
       Dim posEnd As Long 
       Dim dwBuffer As Long 
       Dim pntrICE As Long 
        
       
       hFile = FindFirstUrlCacheEntry(0&, ByVal 0, dwBuffer) 
       
       If (hFile = ERROR_CACHE_FIND_FAIL) And _ 
       (Err.LastDllError = ERROR_INSUFFICIENT_BUFFER) Then 
       
       pntrICE = LocalAlloc(LMEM_FIXED, dwBuffer) 
       
       If pntrICE <> 0 Then 
       
       CopyMemory ByVal pntrICE, dwBuffer, 4 
       
       hFile = FindFirstUrlCacheEntry(vbNullString, _ 
       ByVal pntrICE, _ 
       dwBuffer) 
        
       
       If hFile <> ERROR_CACHE_FIND_FAIL Then 
       
       Do 
        
       CopyMemory icei, ByVal pntrICE, Len(icei) 
        
       
       If (icei.CacheEntryType And _ 
       NORMAL_CACHE_ENTRY) = NORMAL_CACHE_ENTRY Then 
       
       cachefile = GetStrFromPtrA(icei.lpszSourceUrlName) 
       Call DeleteUrlCacheEntry(cachefile) 
       
       End If 
        
       Call LocalFree(pntrICE) 
        
       dwBuffer = 0 
       Call FindNextUrlCacheEntry(hFile, ByVal 0, dwBuffer) 
        
       ''allocate and assign the memory to the pointer 
       pntrICE = LocalAlloc(LMEM_FIXED, dwBuffer) 
       CopyMemory ByVal pntrICE, dwBuffer, 4 
        
       DoEvents 
        
       Loop While FindNextUrlCacheEntry(hFile, ByVal pntrICE, dwBuffer) 
        
       End If ''hFile 
        
       End If ''pntrICE 
        
       End If ''hFile 
        
       Call LocalFree(pntrICE) 
       Call FindCloseUrlCache(hFile) 
        
      End Sub 
       
       
      Private Function GetStrFromPtrA(ByVal lpszA As Long) As String 
       
       GetStrFromPtrA = String$(lstrlenA(ByVal lpszA), 0) 
       Call lstrcpyA(ByVal GetStrFromPtrA, ByVal lpszA) 
        
      End Function 
      
——
      
争分夺秒背单词 → progress  n.前进,进展;进步
 □ 发帖时间:2014-8-12|0:27:43 |回复|返回|

 页次:1/1页 每页10  本主题贴数0 分页: 1


你还没有登录论坛,所以不能发表你的意见。你可以选择:

1、我已注册,我要

2、我还没注册,我要

3、太麻烦了,我还是

Go Top

Copyright by(C)2003-2015 http://abc.sy578.cn