Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[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é

10 réponses

1 2
Avatar
Romain PETIT
"Vincent Barré" a formulé la demande :
Bonjour



Bonsoir,

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.


[...]
Une idée ou les API officiel ??



Essaye de traduire ce code VB :
http://www.mvps.org/vbnet/code/fileapi/deleteurlcache.htm

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Vincent Barré
"Romain PETIT" a écrit :
Bonsoir,

> 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.
[...]
> Une idée ou les API officiel ??

Essaye de traduire ce code VB :
http://www.mvps.org/vbnet/code/fileapi/deleteurlcache.htm





Merci pour ta réponse,
j'ai traduit le code en Delphi et en Windev (je n'ai pas VB), en Delphi Tout
est OK par contre en Windev ça bloque au niveau du FindNext.
Je ne récupére que la première adresse.
Je joint le code si qqu peut regarder ou je me suis planté, sûrement dans le
adresses..

PROCEDURE GetCacheURLList()

ICEI est un INTERNET_CACHE_ENTRY_INFO
hFile est un entier
cachefile est une chaîne
posUrl est un entier
posEnd est un entier
dwBuffer est un entier sans signe sur 4 octets
pntrICE est un entier
vbNullString est une chaîne = Caract(0)
Zero est un entier = 0

ListeSupprimeTout(Liste)


// Récupére la taille du buffer pour allocation
dwBuffer = 0
hFile = AppelDLL32("wininet","FindFirstUrlCacheEntryA", &vbNullString, 0,
&dwBuffer)

// Alloc memoire + FindFirst
pntrICE = AppelDLL32("kernel32","LocalAlloc", LMEM_FIXED, dwBuffer )
SI pntrICE <= 0 ALORS RETOUR
hFile = AppelDLL32("wininet","FindFirstUrlCacheEntryA", &vbNullString,
pntrICE, &dwBuffer)
SI hFile <= 0 ALORS RETOUR
AppelDLL32("kernel32","RtlMoveMemory", pntrICE, &dwBuffer, 4)

BOUCLE

// Rempli la structure avec le buffer lut
AppelDLL32("kernel32","RtlMoveMemory", &ICEI, pntrICE, Dimension(ICEI) )

//CacheEntryType is a long representing
//the type of entry returned
SI ETBinaire(ICEI:CacheEntryType,NORMAL_CACHE_ENTRY) NORMAL_CACHE_ENTRY ALORS

//extract the string from the memory location
//pointed to by the lpszSourceUrlName member
//and add to a list
AppelDLL32("kernel32","lstrcpyA", &cachefile, ICEI:lpszSourceUrlName)

ListeAjoute(Liste, cachefile)
FIN // SI

// Récupére la taille du buffer pour allocation suivante
dwBuffer = 0
AppelDLL32("kernel32","RtlZeroMemory", pntrICE, dwBuffer)
AppelDLL32("wininet","FindNextUrlCacheEntryA", hFile, pntrICE,
&dwBuffer)

// Libére la mémoire
AppelDLL32("kernel32","LocalFree", pntrICE)

// Alloc memoire + FindNext
pntrICE = AppelDLL32("kernel32","LocalAlloc", LMEM_FIXED, dwBuffer )
SI pntrICE <= 0 ALORS SORTIR

SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA", hFile, pntrICE,
&dwBuffer) ALORS SORTIR

FIN

//Erreur(ErreurInfo(errCode),ErreurInfo(errMessage))

AppelDLL32("kernel32","LocalFree", pntrICE)
AppelDLL32("wininet","FindCloseUrlCache", hFile)
Avatar
Romain PETIT
Le 22/12/2003, "Vincent Barré" a supposé :
Merci pour ta réponse,
j'ai traduit le code en Delphi et en Windev (je n'ai pas VB), en Delphi Tout
est OK par contre en Windev ça bloque au niveau du FindNext.
Je ne récupére que la première adresse.
Je joint le code si qqu peut regarder ou je me suis planté, sûrement dans le
adresses..



J'ai le même problème.
En VB6 cela fonctionne correctement.
J'ai modifié des bricoles sur ton code (chaines ASCIIZ) mais j'arrive au même
résultat : le premier appel à FindNextUrlCacheEntryA donne un dwBuffer à 0
(et dans le deboggueur, on a "GetLastError() a renvoyé 6
Détail de l'erreur système :Descripteur non valide").

Bizarre...


LMEM_FIXED est un entier = 0
NORMAL_CACHE_ENTRY est un entier = 1

FILETIME est un 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
hFile est un entier
cachefile est une chaîne ASCIIZ sur 4096
posUrl est un entier
posEnd est un entier
dwBuffer est un entier //sans signe sur 4 octets
pntrICE est un entier
vbNullString est une chaîne ASCIIZ sur 1 = Caract(0)

ListeSupprimeTout(liste)

dwBuffer = 0
hFile = AppelDLL32("wininet","FindFirstUrlCacheEntryA", 0, 0,&dwBuffer)
pntrICE = AppelDLL32("kernel32","LocalAlloc", LMEM_FIXED, dwBuffer )
SI pntrICE <= 0 ALORS RETOUR
AppelDLL32("kernel32","RtlMoveMemory", pntrICE, &dwBuffer, 4)
hFile = AppelDLL32("wininet","FindFirstUrlCacheEntryA", &vbNullString, pntrICE, &dwBuffer)
SI hFile <= 0 ALORS RETOUR
BOUCLE
AppelDLL32("kernel32","RtlMoveMemory", &ICEI, pntrICE, Dimension(ICEI) )
SI ETBinaire(ICEI:CacheEntryType, NORMAL_CACHE_ENTRY) = NORMAL_CACHE_ENTRY ALORS
AppelDLL32("kernel32","lstrcpyA", &cachefile, ICEI:lpszSourceUrlName)
ListeAjoute(liste, cachefile)
FIN
AppelDLL32("kernel32","LocalFree", pntrICE)
dwBuffer = 0

//**********************
// probleme ici
//**********************
AppelDLL32("wininet","FindNextUrlCacheEntryA", hFile, 0, &dwBuffer)

SI dwBuffer>0 ALORS
pntrICE = AppelDLL32("kernel32","LocalAlloc", LMEM_FIXED, dwBuffer )
SI pntrICE <= 0 ALORS SORTIR
SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA", &hFile, pntrICE, &dwBuffer) ALORS SORTIR
SINON
SORTIR
FIN
FIN

//Erreur(ErreurInfo(errCode),ErreurInfo(errMessage))

AppelDLL32("kernel32","LocalFree", pntrICE)
AppelDLL32("wininet","FindCloseUrlCache", hFile)

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Peter
Romain PETIT wrote:
Le 22/12/2003, "Vincent Barré" a supposé :



Bonjour,

> SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA", &hFile,
pntrICE, &dwBuffer) ALORS SORTIR

If changed to :

SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA", hFile, pntrICE,
&dwBuffer) ALORS SORTIR

it is working here ...

Greetings,
Peter
Avatar
Vincent Barré
Peter a réctified

> SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA", &hFile,
pntrICE, &dwBuffer) ALORS SORTIR

If changed to :

SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA", hFile, pntrICE,
&dwBuffer) ALORS SORTIR

it is working here ...



Sorry but it's pas marcher non plus.

Dans mon message d'origine le syntaxe etait correct.
les deux syntaxe ne marche pas en windev ?

Salutation
Vincent barre

Avatar
Romain PETIT
"Peter" avait énoncé :
Bonjour,



Bonjour,

SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA", &hFile, pntrICE, &dwBuffer) ALORS SORTIR





If changed to :
SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA", hFile, pntrICE, &dwBuffer) ALORS SORTIR
it is working here ...



Ne marche pas non plus (j'avais tenté...)
Quelle configuration ?

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Pierre-Yves TAVERNIER
Et que donne un getLastError() après l'instruction que ne marche pas ?

PYT
"Romain PETIT" a écrit dans le message de
news:
"Peter" avait énoncé :
> Bonjour,

Bonjour,

>> SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA", &hFile, pntrICE,


&dwBuffer) ALORS SORTIR

> If changed to :
> SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA", hFile, pntrICE,


&dwBuffer) ALORS SORTIR
> it is working here ...

Ne marche pas non plus (j'avais tenté...)
Quelle configuration ?

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
Romain PETIT
"Pierre-Yves TAVERNIER" a exposé le 23/12/2003 :
Et que donne un getLastError() après l'instruction que ne marche pas ?



Dans le deboggeur :
GetLastError() a renvoyé 6
Détail de l'erreur système :Descripteur non valide.

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Pjotr Kropotkin
Bonsoir,

>> SI PAS AppelDLL32("wininet","FindNextUrlCacheEntryA",
>> hFile, pntrICE, &dwBuffer) ALORS SORTIR
>> it is working here ...

>Ne marche pas non plus (j'avais tenté...)
>Quelle configuration ?

At work it worked, at home not, seems that the wininet.dll
have to be loaded first.

So first a LoadDLL("wininet.dll") and then it's going better

--
Peter
Avatar
Romain PETIT
"Pjotr Kropotkin" a formulé la demande :
LoadDLL("wininet.dll")



Bingo !
Thx Peter (or Pjotr ?)

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
1 2