begin process at 2012 02 12 17:36:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > GESTIONNAIRE (LECTURE ET SUPPRESSION) DU CACHE INTERNET (COOKIES,URL,HISTORIQUE)

GESTIONNAIRE (LECTURE ET SUPPRESSION) DU CACHE INTERNET (COOKIES,URL,HISTORIQUE)


 Information sur la source

Note :
9 / 10 - par 8 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Niveau :Initié Date de création :12/07/2002 Date de mise à jour :04/07/2003 17:53:56 Vu / téléchargé :8 713 / 1 025

Auteur : ShareVB

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (21)
Ajouter un commentaire et/ou une note


 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...).  

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source .NET (Dotnet) CLONE/FORK DES FLUX DE LA CONSOLE : PERMETTRE LA REDIRECTION...
Source avec Zip Source .NET (Dotnet) DÉFRAGMENTER UN FICHIER
Source avec Zip Source .NET (Dotnet) ECRAN DE VEILLE : DÉTECTER LE LANCEMENT/DÉCLENCHER/EMPÊCHER
Source avec Zip Source .NET (Dotnet) AUTORUN : DÉTECTION DU LANCEMENT DE L'AUTORUN, DÉTECTION DU ...
Source avec Zip Source .NET (Dotnet) NSLOOKUP EN VB.NET OU COMMENT FAIRE UNE REQÛETE DNS EN PRÉCI...

 Sources de la même categorie

Source avec Zip Source avec une capture GESTIONNAIRE DE TÉLÉCHARGEMENT, AVEC REPRISE ET MULTITHREADI... par Madx23
Source avec Zip Source avec une capture CONVERTIR DU TEXTE RTF EN CODE HTML ET VICE-VERSA par vicosta
Source avec Zip Source avec une capture DICTIONAIRE TEXT/AUDIO/VISUELLE ANGLAIS AVEC WEBBROWSER CONT... par majnounmajda
Source avec Zip Source .NET (Dotnet) NSLOOKUP EN VB.NET OU COMMENT FAIRE UNE REQÛETE DNS EN PRÉCI... par ShareVB
Source avec Zip Source avec une capture MINI SEVEUR HTTP AVEC INTERFACE GRAPHIQUE ET IMPLÉMENTATIONS... par lemout

Commentaires et avis

Commentaire de Patrice99 le 13/07/2002 12:33:37

Excellent ! il faudrait vraiment que tu ajoutes la possibilité de trier les infos en cliquant sur l'entete de chaque colonne, et puis aussi de gerer le redimensionnement de la forme, ca serait assez génial !

Commentaire de ShareVB le 13/07/2002 12:54:03

Je viens de mettre à jour le projet :
- tri des colonnes
- pour le redimensionnement de la form ca sera pour plus tard (je suis en train de créer un addin pour générer le code tout seul lol enfin presque ;) )

Commentaire de tich69 le 11/08/2002 17:26:27

c vraiment cool !

Commentaire de blabla le 10/12/2002 22:30:41

kler c cool

Commentaire de LordBob le 05/01/2003 12:39:51

ouais pas mal, pas mal... :D

Commentaire de abys le 26/11/2003 10:41:57

serait tu comment effacer la saisie semi automatique ?
menu outils -&gt; options internet -&gt; Onglet contenu -&gt;saisie semi automatique
je souhaiterais utiliser ton code pour ajouter un bouton a internet explorer pour tout supprimer d un coup, mais me manque la saisie semi auto
merci

Commentaire de ShareVB le 27/11/2003 22:16:10

pour la saisie semi automatique il faut supprimer toutes les valeurs des clés suivantes :
- pour les mots de passes : HKEY_CURRENT_USERSoftwareMicrosoftInternet
ExplorerIntelliFormsSPW
- pour les formulaires ce serait peut etre au meme endroit...
il faut testé

Commentaire de asem67 le 16/01/2005 00:18:40

et pour supp les index.dat
ça serai possible?

Commentaire de ShareVB le 16/01/2005 11:55:40

salut,

il y a plusieurs solutions :
- soit tu prends mon autre code pour lister les fichiers ouverts (http://www.vbfrance.com/code.aspx?id=28627), tu prends les handles vers les index.dat et tu fais un driver en mode kernel pour fermer ces handles dans les processus associés...au risque de faire planter l'application qui tenterait d'utiliser un des handles fermés...uniquement sous NT/2K/XP
- soit tu crées un driver en mode kernel qui se charge avant windows qui supprime les fichiers index.dat...toujours pas facile à faire...plus risque d'écrans bleus...uniquement sous NT/2K/XP
- soit à la main http://www.tweakxp.com/tweak2152.aspx...pour tout windows
- soit (je ne suis pas sur) avec MoveFileEx et le flag MOVEFILE_DELAY_UNTIL_REBOOT et lpNewFileName = vbNullstring...uniquement sous NT/2K/XP

ShareVB

Commentaire de violent_ken le 30/08/2005 19:34:43

C'est super bien comme source.
Est-ce que je pourrais l'utiliser telle quelle (en modifiant que l'apparence) dans mon projet ? (je te citerais, bien évidemment)
En tout cas, bravo
10/10
@+

Commentaire de ShareVB le 31/08/2005 09:34:16

salut,

tu peux l'utiliser à volonté...

ShareVB

Commentaire de violent_ken le 31/08/2005 13:13:25

ok, merci
@+

Commentaire de Ulysse3 le 25/09/2006 17:27:32

Est-ce qu'on peut décoder les coockies pour savoir la valeur représenter.

Commentaire de thedjpredator le 17/08/2007 14:06:49

salut, si je souhaite vider mon cache internet, historique, etc...
comment dois-je utiliser ta fonction "DeleteUrlCache"
car en faite jeffectue des action sous un webbrowser et
une fois que je l'ai effectué 5 fois ça me bloque
et je souhaite vider le cache comme je le fais ala main
pour pouvoir recommencer sans probleme.

Merci d'avance ;)

Commentaire de ShareVB le 20/08/2007 23:13:35

salut,

normalement, tu récupères la liste des URLs et tu passes chaque URL à DeleteUrlCache...si ca te bloque, c'est peut être parce que tu essaies de supprimer des entrées du cache qui n'existent plus ?

ShareVB

Commentaire de pepere5 le 20/01/2008 06:11:47

Absolument excellent. Un grand merci.

Commentaire de imparator_42 le 13/04/2008 23:38:18

Ceci modifie le fichier index.dat ?
sinon effacer les cookies ne sert à rien

Commentaire de ShareVB le 13/04/2008 23:46:54

salut,

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

Commentaire de imparator_42 le 14/04/2008 00:25:59

pour que ce soit effectif il doit bien modifier le fichier index.dat non ?
parce que j'ai un problème avec ceci . . .
je peux aller effacer les fichiers txt manuellement . . ( est-ce que c'est pareil ? )

Commentaire de imparator_42 le 14/04/2008 00:40:16

effacer manuellement les fichiers cookies ( fichiers txt) est pareil que le boulot de ce programme?

Commentaire de ShareVB le 16/04/2008 21:41:31

Oui sauf que en programmation quand on peut utiliser des API mise à notre disposition c'est toujours la meilleure solution...comme ca quand le format de stockage change, on n'a pas besoin de changer le code...

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

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,669 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales