Accueil > > > GESTIONNAIRE (LECTURE ET SUPPRESSION) DU CACHE INTERNET (COOKIES,URL,HISTORIQUE)
GESTIONNAIRE (LECTURE ET SUPPRESSION) DU CACHE INTERNET (COOKIES,URL,HISTORIQUE)
Information sur la source
Description
il permet de lire et de supprimer (tout ou par elements) l'historique, les url du cache, et les cookies. (accesoirement montre la methode pour mettre une icone dans le Systray) NOUVELLE VERSION : possibilité de copie un fichier présent dans le cache dans un autre répertoire
Source
- '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
'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
Conclusion
Fonctionne sous XP mais l'historique n'est pas toujours supprimer et lu en entier. N'hésitez pas a faire des remarques (compatibilité win 98 95 2000...).
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|