OVH Cloud OVH Cloud

[WD7.5] API pour effacer le dossier "Temporary Internet Files"

12 réponses
Avatar
Vincent Barré
Bonjour

Qqu connaît-il le moyen "Propre" d'effacer le fichier index.dat des dossiers
"Temporary Internet Files", "History" et autres répertoires de
"surveillance" de Windows.
Car évidement les fonction fSupprime et fSupprimeRep ne marche pas sur ces
répertoire (Fichier bloqué par Windows).
Et le Ré-écriture dans ces fichier n'est pas très propre.

Une idée ou les API officiel ??

Salutation
Vincent Barré

2 réponses

1 2
Avatar
Vincent Barré
Merci a Peter (or Pjotr ?)

Voici une version plus simple :

PROCEDURE GetCacheURLList()

FILETIME est une structure
dwLowDateTime est un entier
dwHighDateTime est un entier
FIN

INTERNET_CACHE_ENTRY_INFO est une structure
dwStructSize est un entier
lpszSourceUrlName est un entier
lpszLocalFileName est un entier
CacheEntryType est un entier
dwUseCount est un entier
dwHitRate est un entier
dwSizeLow est un entier
dwSizeHigh est un entier
LastModifiedTime est un FILETIME
ExpireTime est un FILETIME
LastAccessTime est un FILETIME
LastSyncTime est un FILETIME
lpHeaderInfo est un entier
dwHeaderInfoSize est un entier
lpszFileExtension est un entier
dwExemptDelta est un entier
FIN

_ICEI est un INTERNET_CACHE_ENTRY_INFO

T_ICEI est une structure
dwStructSize est un entier
szRestOfData est un tableau fixe de 1024 entier
FIN
ICEI est une T_ICEI

hFile est un entier
cachefile est une chaîne ASCIIZ sur 260 // MAX_PATH
dwBuffer est un entier sans signe sur 4 octets
pntrICE est un entier

ListeSupprimeTout(Liste)

ChargeDLL("wininet.dll")

ICEI:dwStructSize = 80
dwBuffer = 2048
hFile = AppelDLL32("wininet","FindFirstUrlCacheEntryA", Null, &ICEI,
&dwBuffer)
SI hFile <= 0 ALORS RETOUR

BOUCLE

Transfert(&_ICEI,&ICEI,Dimension(_ICEI))

SI ETBinaire(_ICEI:CacheEntryType,NORMAL_CACHE_ENTRY) NORMAL_CACHE_ENTRY ALORS
AppelDLL32("kernel32","lstrcpyA", &cachefile, _ICEI:lpszSourceUrlName)
ListeAjoute(Liste, cachefile)
FIN

dwBuffer = 2048
SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA", hFile, &ICEI,
&dwBuffer) ALORS SORTIR

SI ErreurInfo(errCodeSystème) = 259 ALORS SORTIR // NO_MORE_ITEM

FIN

AppelDLL32("wininet","FindCloseUrlCache", hFile)
....
Avatar
Vincent Barré
Encore plus simple (+Effacement)


FILETIME est une structure
dwLowDateTime est un entier
dwHighDateTime est un entier
FIN

INTERNET_CACHE_ENTRY_INFO est une structure
dwStructSize est un entier
lpszSourceUrlName est un entier
lpszLocalFileName est un entier
CacheEntryType est un entier
dwUseCount est un entier
dwHitRate est un entier
dwSizeLow est un entier
dwSizeHigh est un entier
LastModifiedTime est un FILETIME
ExpireTime est un FILETIME
LastAccessTime est un FILETIME
LastSyncTime est un FILETIME
lpHeaderInfo est un entier
dwHeaderInfoSize est un entier
lpszFileExtension est un entier
dwExemptDelta est un entier
szRestOfData est un tableau fixe de 1024 entier
FIN

ICEI est un INTERNET_CACHE_ENTRY_INFO

hFile est un entier
cachefile est une chaîne ASCIIZ sur 260 // MAX_PATH
dwBuffer est un entier sans signe sur 4 octets
pntrICE est un entier

ListeSupprimeTout(Liste)

ChargeDLL("wininet.dll")

ICEI:dwStructSize = 80
dwBuffer = 2048
hFile = AppelDLL32("wininet","FindFirstUrlCacheEntryA", Null, &ICEI,
&dwBuffer)
SI hFile <= 0 ALORS RETOUR

BOUCLE

SI ETBinaire(ICEI:CacheEntryType,NORMAL_CACHE_ENTRY) NORMAL_CACHE_ENTRY ALORS
AppelDLL32("kernel32","lstrcpyA", &cachefile, ICEI:lpszSourceUrlName)
ListeAjoute(Liste, "! "+ cachefile)
FIN

SI Efface ALORS
IF AppelDLL32("wininet","DeleteUrlCacheEntry",ICEI:lpszSourceUrlName)
<> 0 ALORS
ListeModifie(Liste,"- "+cachefile,ListeOccurrence(Liste))
FIN
FIN

dwBuffer = 2048
SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA", hFile, &ICEI,
&dwBuffer) ALORS SORTIR

SI ErreurInfo(errCodeSystème) = 259 ALORS SORTIR // NO_MORE_ITEM

FIN

AppelDLL32("wininet","FindCloseUrlCache", hFile)

@+ et bonne fêtes a tous

Vincent Barré
1 2