Soyez le premier à donner votre avis sur cette source.
Vue 11 060 fois - Téléchargée 1 391 fois
'voici le code du module de gestion du cache,historique et cookies 'contantes pour les fonctions de gestion du cache Public Const ERROR_CACHE_FIND_FAIL As Long = 0 Public Const ERROR_CACHE_FIND_SUCCESS As Long = 1 Public Const ERROR_FILE_NOT_FOUND As Long = 2 Public Const ERROR_ACCESS_DENIED As Long = 5 Public Const ERROR_INSUFFICIENT_BUFFER As Long = 122 Public Const MAX_PATH As Long = 260 Public Const MAX_CACHE_ENTRY_INFO_SIZE As Long = 4096 'constantes de gestion de la mémoire Public Const LMEM_FIXED As Long = &H0 Public Const LMEM_ZEROINIT As Long = &H40 Public Const LPTR As Long = (LMEM_FIXED Or LMEM_ZEROINIT) 'types d'entrée du cache Public Const NORMAL_CACHE_ENTRY As Long = &H1 Public Const EDITED_CACHE_ENTRY As Long = &H8 Public Const TRACK_OFFLINE_CACHE_ENTRY As Long = &H10 Public Const TRACK_ONLINE_CACHE_ENTRY As Long = &H20 Public Const STICKY_CACHE_ENTRY As Long = &H40 Public Const SPARSE_CACHE_ENTRY As Long = &H10000 Public Const COOKIE_CACHE_ENTRY As Long = &H100000 Public Const URLHISTORY_CACHE_ENTRY As Long = &H200000 Public 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 'Dates Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type 'une entrée du cache 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 Public Type Internet_Cache_Entry 'dwStructSize As Long SourceUrlName As String LocalFileName As String 'CacheEntryType As Long UseCount As Long HitRate As Long Size As Long 'dwSizeHigh As Long LastModifiedTime As Date ExpireTime As Date LastAccessTime As Date LastSyncTime As Date HeaderInfo As String 'dwHeaderInfoSize As Long FileExtension As String 'ExemptDelta As Long End Type '============================================================================== ' Déclarations API Private Declare Function FileTimeToLocalFileTime Lib "KERNEL32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long Private Declare Function FileTimeToSystemTime Lib "KERNEL32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long Private Declare Function LocalFileTimeToFileTime Lib "KERNEL32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long Private Declare Function SystemTimeToFileTime Lib "KERNEL32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long 'on cherche la premiere entrée Private Declare Function FindFirstUrlCacheEntry Lib "Wininet.dll" _ Alias "FindFirstUrlCacheEntryA" _ (ByVal lpszUrlSearchPattern As String, _ lpFirstCacheEntryInfo As Any, _ lpdwFirstCacheEntryInfoBufferSize As Long) As Long 'on cherche l'entrée suivante Private Declare Function FindNextUrlCacheEntry Lib "Wininet.dll" _ Alias "FindNextUrlCacheEntryA" _ (ByVal hEnumHandle As Long, _ lpNextCacheEntryInfo As Any, _ lpdwNextCacheEntryInfoBufferSize As Long) As Long 'on ferme le cache Private Declare Function FindCloseUrlCache Lib "Wininet.dll" _ (ByVal hEnumHandle As Long) As Long 'on supprime une entrée du cache Public Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _ Alias "DeleteUrlCacheEntryA" _ (ByVal lpszUrlName As String) As Long 'copier la mémoire Private Declare Sub CopyMemory Lib "KERNEL32" _ Alias "RtlMoveMemory" _ (pDest As Any, _ pSource As Any, _ ByVal dwLength As Long) 'fonction pour les chaines de caracteres 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 'fonction qui retrouve toutes les entrées du cache internet 'URL contient un tableau des entrées page internet du cache 'URLHistory contient un tableau de l'historique des pages visitées 'Cookies contient un tableau des cookies Public Function GetURLCache(URL() As Internet_Cache_Entry, URLHistory() As Internet_Cache_Entry, Cookies() As Internet_Cache_Entry) Dim ICEI As INTERNET_CACHE_ENTRY_INFO 'variable temporaire de stockage de l'entrée du cache Dim hFile As Long 'handle du fichier de l'entrée du cache Dim dwBuffer As Long 'taille du buffer Dim pntrICE As Long 'pointeur vers un Internet_cache_entry_info dwBuffer = 0 'on initialise la taille du buffer ReDim URL(0) 'on initialise les tableau ReDim URLHistory(0) ReDim Cookies(0) hFile = FindFirstUrlCacheEntry(0&, ByVal 0, dwBuffer) ' on cherche la taille de la premiere entrée du cache If (hFile = ERROR_CACHE_FIND_FAIL) And _ (Err.LastDllError = ERROR_INSUFFICIENT_BUFFER) Then ' s'il y a une erreur retournée dwBuffer contient alors la taille du buffer pntrICE = LocalAlloc(LMEM_FIXED, dwBuffer) 'on alloue de la mémoire If pntrICE Then ' s'il n'y a pas d'erreurs CopyMemory ByVal pntrICE, dwBuffer, 4 ' on copie dans la mémoire allouée la taille du buffer dans le membre dwStructSize (le premier long de la structure) hFile = FindFirstUrlCacheEntry(vbNullString, ByVal pntrICE, dwBuffer) 'on cherche If hFile <> ERROR_CACHE_FIND_FAIL Then 's'il y a des fichiers dans le cache Do CopyMemory ICEI, ByVal pntrICE, Len(ICEI) ' on copie les données renvoyées par la fonction précédemment appellée If (ICEI.CacheEntryType And _ NORMAL_CACHE_ENTRY) = NORMAL_CACHE_ENTRY Then ' si c une entrée normale Select Case ICEI.CacheEntryType Case URLHISTORY_CACHE_ENTRY + NORMAL_CACHE_ENTRY ' si c une entrée du l'historique ReDim Preserve URLHistory(UBound(URLHistory) + 1) 'on ajoute une entrée dans le tableau 'on copie toutes les infos URLHistory(UBound(URLHistory) - 1).SourceUrlName = GetStrFromPtrA(ICEI.lpszSourceUrlName) URLHistory(UBound(URLHistory) - 1).LocalFileName = GetStrFromPtrA(ICEI.lpszLocalFileName) URLHistory(UBound(URLHistory) - 1).FileExtension = GetStrFromPtrA(ICEI.lpszFileExtension) URLHistory(UBound(URLHistory) - 1).HeaderInfo = GetStrFromPtrA(ICEI.lpHeaderInfo) URLHistory(UBound(URLHistory) - 1).HitRate = ICEI.dwHitRate URLHistory(UBound(URLHistory) - 1).ExpireTime = FileTime2SystemTime(ICEI.ExpireTime) URLHistory(UBound(URLHistory) - 1).LastAccessTime = FileTime2SystemTime(ICEI.LastAccessTime) URLHistory(UBound(URLHistory) - 1).LastModifiedTime = FileTime2SystemTime(ICEI.LastModifiedTime) URLHistory(UBound(URLHistory) - 1).LastSyncTime = FileTime2SystemTime(ICEI.LastSyncTime) URLHistory(UBound(URLHistory) - 1).Size = ICEI.dwSizeHigh * 2 ^ 32 + ICEI.dwSizeLow URLHistory(UBound(URLHistory) - 1).UseCount = ICEI.dwUseCount Case COOKIE_CACHE_ENTRY + NORMAL_CACHE_ENTRY 'si c un cookie ReDim Preserve Cookies(UBound(Cookies) + 1) 'on ajoute une entrée dans le tableau 'on copie toutes les infos Cookies(UBound(Cookies) - 1).SourceUrlName = GetStrFromPtrA(ICEI.lpszSourceUrlName) Cookies(UBound(Cookies) - 1).LocalFileName = GetStrFromPtrA(ICEI.lpszLocalFileName) Cookies(UBound(Cookies) - 1).FileExtension = GetStrFromPtrA(ICEI.lpszFileExtension) Cookies(UBound(Cookies) - 1).HeaderInfo = GetStrFromPtrA(ICEI.lpHeaderInfo) Cookies(UBound(Cookies) - 1).HitRate = ICEI.dwHitRate Cookies(UBound(Cookies) - 1).ExpireTime = FileTime2SystemTime(ICEI.ExpireTime) Cookies(UBound(Cookies) - 1).LastAccessTime = FileTime2SystemTime(ICEI.LastAccessTime) Cookies(UBound(Cookies) - 1).LastModifiedTime = FileTime2SystemTime(ICEI.LastModifiedTime) Cookies(UBound(Cookies) - 1).LastSyncTime = FileTime2SystemTime(ICEI.LastSyncTime) Cookies(UBound(Cookies) - 1).Size = ICEI.dwSizeHigh * 2 ^ 32 + ICEI.dwSizeLow Cookies(UBound(Cookies) - 1).UseCount = ICEI.dwUseCount Case Else 'sinon ReDim Preserve URL(UBound(URL) + 1) 'on ajoute une entrée dans le tableau 'on copie toutes les infos URL(UBound(URL) - 1).SourceUrlName = GetStrFromPtrA(ICEI.lpszSourceUrlName) URL(UBound(URL) - 1).LocalFileName = GetStrFromPtrA(ICEI.lpszLocalFileName) URL(UBound(URL) - 1).FileExtension = GetStrFromPtrA(ICEI.lpszFileExtension) URL(UBound(URL) - 1).HeaderInfo = GetStrFromPtrA(ICEI.lpHeaderInfo) URL(UBound(URL) - 1).HitRate = ICEI.dwHitRate URL(UBound(URL) - 1).ExpireTime = FileTime2SystemTime(ICEI.ExpireTime) URL(UBound(URL) - 1).LastAccessTime = FileTime2SystemTime(ICEI.LastAccessTime) URL(UBound(URL) - 1).LastModifiedTime = FileTime2SystemTime(ICEI.LastModifiedTime) URL(UBound(URL) - 1).LastSyncTime = FileTime2SystemTime(ICEI.LastSyncTime) URL(UBound(URL) - 1).Size = ICEI.dwSizeHigh * 2 ^ 32 + ICEI.dwSizeLow URL(UBound(URL) - 1).UseCount = ICEI.dwUseCount End Select 'on laisse l'application respirer DoEvents End If 'on libère la mémoire allouée Call LocalFree(pntrICE) 'on met la taille du buffer à 0 dwBuffer = 0 'on cherche la taille de l'entrée suivante Call FindNextUrlCacheEntry(hFile, ByVal 0, dwBuffer) 'on alloue à nouveau de la mémoire pntrICE = LocalAlloc(LMEM_FIXED, dwBuffer) 'on copie la taille de la mémire allouée dans le premier membre du buffer CopyMemory ByVal pntrICE, dwBuffer, 4 Loop While FindNextUrlCacheEntry(hFile, ByVal pntrICE, dwBuffer) 'on cherche l'entrée suivante End If End If End If 'on libère le pointeur Call LocalFree(pntrICE) 'on ferme le cache Call FindCloseUrlCache(hFile) End Function 'fonction servant à copier la chaine de caractere dont on a le pointeur Private Function GetStrFromPtrA(ByVal lpszA As Long) As String 'on prépare un buffer de la taille de la chaine GetStrFromPtrA = String$(lstrlenA(ByVal lpszA), 0) 'on copie la chaine Call lstrcpyA(ByVal GetStrFromPtrA, ByVal lpszA) End Function 'fonction servant à convertir une structure FILETIME en Date Private Function FileTime2SystemTime(FileT As FILETIME) As Date Dim SysT As SYSTEMTIME 'buffer de convertion FileTimeToLocalFileTime FileT, FileT 'on convertie la date en date locale FileTimeToSystemTime FileT, SysT 'on convertie le FILETIME en SYSTEMTIME 'on convertie en date FileTime2SystemTime = TimeSerial(SysT.wHour, SysT.wMinute, SysT.wSecond) + DateSerial(SysT.wYear, SysT.wMonth, SysT.wDay) End Function 'on supprime les entrées dans Liste() Public Function DeleteUrlCache(Liste() As Internet_Cache_Entry, Optional Excludes As String) As Boolean Dim X As Long ' un compteur For X = LBound(Liste) To UBound(Liste) - 1 If InStr(Excludes, Liste(X).SourceUrlName) = 0 Then 'si l'entrée n'est pas dans la liste d'exclusion, on supprime DeleteUrlCache = DeleteUrlCacheEntry(Liste(X).SourceUrlName) End If Next X End Function
16 avril 2008 à 21:41
le fichier index.dat est un peu spécial parce qu'il ne pas être supprimé et n'ai pratiquement jamais purgé, laissant une trace de l'historique depuis le dernier formattage ou effacement forcé...
ShareVB
14 avril 2008 à 00:40
14 avril 2008 à 00:25
parce que j'ai un problème avec ceci . . .
je peux aller effacer les fichiers txt manuellement . . ( est-ce que c'est pareil ? )
13 avril 2008 à 23:46
c'est Windows qui gère le fichier Index.dat...l'api permet juste d'effacer comme par la fenêtre Option d'IE...
ShareVB
13 avril 2008 à 23:38
sinon effacer les cookies ne sert à rien
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.