Alors j'ai essayé plusieurs solutions à mon problème. J'ai testé 4 solutions pour supprimer l'historique de IE.
Premièrement Ultra surf ne fonctionne pas quand je quitte une page IE l'historique n'est pas supprimé.
Ensuite j'ai testé les 3 fonctions indépendamment de mon programme.
Le code de Tlem
http://www.autoitscript.fr/forum/viewto ... ider+cache avec MsgBox pour voir où il y a un problème. Le résultat est que l'historique ne se vide pas entièrement.
Code : Tout sélectionner
#Include <File.au3>
#Include <Array.au3>
#Include <IE.au3>
_EmptyIEHistory()
_EmptyIECache()
;;;;;;;;;;;;;;;;;;;;;;;;;;;EmptyIEHistory;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _EmptyIEHistory()
; Lecture de la clé dans la base de registre pour la compatibilité Vista/Seven
$IEHistory = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "History")
If $IEHistory = "" Then
SetError(1)
Return 0
EndIf
; Au cas ou la clé serait écrite avec la variable %userprofile%
$IEHistory = StringReplace($IEHistory, "%userprofile%", @UserProfileDir) & "\History.IE5"
; Suppression de l'historique IE
_FileAndDirectoryDelete($IEHistory)
$Size = DirGetSize($IEHistory, 1)
If $Size[2] <> 0 Then ; Vérifie que le répertoire est vide.
SetError(1)
MsgBox (0,"Historique","Non vide")
Return 0
Else
Return 1
EndIf
EndFunc ;==>_EmptyIEHistory
;;;;;;;;;;;;;;;;;;;;;;;;;;;End EmptyIEHistory;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;EmptyIECache;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _EmptyIECache()
; Lecture de la clé dans la base de registre pour la compatibilité Vista/Seven
$IECache = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "Cache")
If $IECache = "" Then
SetError(1)
Return 0
EndIf
; Au cas ou la clé serait écrite avec la variable %userprofile%
$IECache = StringReplace($IECache, "%userprofile%", @UserProfileDir)
; Suppression du cache IE
_FileAndDirectoryDelete($IECache)
; Suppression du contenu du répertoire Content.IE5.
run(@ComSpec & ' /c rd /s /q "' & $IECache & '\Content.IE5"',$IECache,@SW_HIDE)
$Size = DirGetSize($IECache & '\Content.IE5', 1)
If $Size[2] <> 0 Then ; Vérifie que le répertoire est vide.
SetError(1)
Return 0
MsgBox (0,"Cache","Non vide")
Else
Return 1
EndIf
EndFunc ;==>_EmptyIEHistory
;;;;;;;;;;;;;;;;;;;;;;;;;;;End EmptyIECache;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;FileAndDirectoryDelete;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func _FileAndDirectoryDelete($sDir)
$search = FileFindFirstFile($sDir & "\*")
If @error Then Exit
While 1
$Next = FileFindNextFile($Search)
If @error Then ExitLoop
$Next = $sDir & "\" & $Next
$att = FileGetAttrib($Next)
If StringInStr($att, "d") Then
FileSetAttrib($Next, "-RSH", 1)
MsgBox (0,"Directory Remove",$Next)
DirRemove($Next, 1)
Else
FileSetAttrib($Next, "-RSH")
MsgBox (0,"File Delete",$Next)
FileDelete($Next)
EndIf
WEnd
FileClose($search)
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;End FileAndDirectoryDelete;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Vu que si je supprime manuellement le répertoire Temporary Internet Files, ça fonctionne je me suis dit que j'allais le faire avec la fonction FileDelete. en utilisant le programme à la page
http://www.autoitscript.fr/forum/viewto ... ire#p19171. Résultat n'est pas concluant non plus. J'avais même rajouté un DirRemove pour le répertoire Content.IE5 et History.IE5 et le résultat est le même.
Code : Tout sélectionner
#Include <File.au3>
#Include <Array.au3>
global $Dossier= @UserProfileDir & "\Local Settings\Temporary Internet Files"
$FileList=_FileListToArray($Dossier)
If @Error=1 Then
MsgBox (0,"","No Files\Folders Found.")
Exit
EndIf
for $i = 1 to $FileList[0]
MsgBox (0,"Files:",$FileList[$i])
FileDelete($Dossier&'\'&$FileList[$i])
Next
Enfin la dernière solution qui fonctionne, en utilisant CCleaner. Le petit problème avec cette solution est qu'elle ne peut fonctionner que sur un ordinateur qui a d'installé Ccleaner et qu'il soit configuré au variable d'environnement. Donc si quelqu'un a une idée pour faire fonctionner les 2 précédentes merci. Rien que par curiosité déjà. Je peux avoir un problème de configuration de mon PC aussi?
Code : Tout sélectionner
#include <Process.au3>
$Nettoyer="ccleaner /auto"
_RunDOS($Nettoyer)
ProcessWaitClose ( "ccleaner.exe" ,600000)