Comment savoir si la fenêtre IE répond bien?
Il peut arriver que la fenetre Internet Explorer plante completement. Et alors la, vous l'avez bien dans l'os avec votre automatisation de tâche, car tout va planter lamentablement, et un simple ProcessKill() sur IExplore.exe peut ne pas suffire.
Dans ce cas, je vous invite à utiliser le bout de code suivant, qui detecte si votre fenêtre IE freeze ou non :
Code : Tout sélectionner
If IsObj($oIE) Then
_IELoadWait($oIE)
$aerror = 0
$v_ret = DllCall("user32.dll", "int", "IsHungAppWindow", "hwnd", HWnd($oIE.HWND))
If @error <> 0 Or $v_ret[0] Then $aerror = 1
Else
$aerror = 1
EndIf
si $aerror = 1, Alors vous pouvez enclencher le plan B : Detruire tous les objets, Fermer IE, et relancer votre automatisation.
Comment forcer la fermeture d'IE?
J'ai précedemment publié un outil qui marche à merveille, mieux même que quand vous faites Ctrl+Alt+Del pour forcer la fermeture d'un programme. Suivez le lien suivant, il contient tous les exemples pour la fermeture d'un process IE :
http://autoitscript.fr/forum/viewtopic.php?f=21&t=3761
Vous pourrez voir dans les exemples du lien précédant qu'il vius faut connaitre le PID du process pour pouvoir forcer sa fermeture.
Si vous voulez forcer la fermeture de la fenêtre IE active
mais pas des autres fenetres IE, vous pouvez utiliser la fonction suivante _GetHwndFromPID($PID) qui retourne l'Handle de la fenetre à partir du PID. Ainsi vous pourrez comparer l'Handle de la fenetre active à celle retournée et être certain de fermer le bon IExplore.exe
http://autoitscript.fr/forum/viewtopic.php?f=21&t=5411
Comment supprimer le cache d'IE?
Pour certaines simulations, le cache peut poser problème, par exemple en ne téléchargeant pas certaines informations, et pour un système de Log j'avais besoin d'avoir toujours le même temps de chargement de page en cas de réussite du scénario. Voilà donc une fonction qui vide tout le cache d'IE. Cette fonction a été écrite par Tlem.
► Afficher le texteFunc _EmptyIECache()
Code : Tout sélectionner
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
Else
Return 1
EndIf
EndFunc ;==>_EmptyIECache
Func _FileAndDirectoryDelete($sDir)
$search = FileFindFirstFile($sDir & "\*")
If @error Then Return 0
While 1
$Next = FileFindNextFile($search)
If @error Then ExitLoop
$Next = $sDir & "\" & $Next
$att = FileGetAttrib($Next)
If StringInStr($att, "d") Then
FileSetAttrib($Next, "-RSH", 1)
DirRemove($Next, 1)
Else
FileSetAttrib($Next, "-RSH")
FileDelete($Next)
EndIf
WEnd
FileClose($search)
EndFunc ;==>_FileAndDirectoryDelete