Manipuler Onglets IE avec autoit [RESOLU]

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Kerjean
Niveau 1
Niveau 1
Messages : 9
Enregistré le : ven. 02 sept. 2016 19:03
Status : Hors ligne

Manipuler Onglets IE avec autoit [RESOLU]

#1

Message par Kerjean »

Bonjour à tous !

Je suis nouveau sur le site et dans autoit et je cherche à pouvoir manipuler des onglets d'Internet Explorer (comme on pourrait manipuler des fenêtres). On peut trouver des fenêtres IE avec un winExists("[CLASS:IEFrame]") et, dans mon cas, les fermer si elles ne correspondent pas à certains critères, mais cela m'est actuellement impossible pour les onglets IE, malgré mes recherches.

Visiblement, une fenêtre IE a un Handle donné et change de titre en fonction de l'onglet actif. J'aimerais pouvoir fermer un onglet IE même si celui-ci n'est pas actif, or quand il est inactif (cad quand il n'a pas le focus), impossible de le trouver ni de le fermer...

Merci à tous pour vos réponses :)
Modifié en dernier par Kerjean le lun. 05 sept. 2016 08:01, modifié 1 fois.
Je suis un Newbie mais j'apprends jour après jour
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Manipuler Onglets IE avec autoit  

#2

Message par walkson »

Bonsoir et bienvenue,
Je ne suis pas un spécialiste de IE mais je vous propose ce code. D'autres auront peut être de meilleurs idées que moi......
#include <IE.au3>

Const $ie_new_in_tab=0x0800
$oIE = _IECreate("www.autoitscript.com")
$oIE.Navigate("www.google.fr", $ie_new_in_tab)
$oIE.Navigate("www.orange.fr", $ie_new_in_tab)
Sleep(3000)
$oIE2 = _IEAttach("autoit")
$oIE3 = _IEAttach("google")
MsgBox(0,"",_IEPropertyGet($oIE2, "locationurl"));pour vérifier qu'il est reconnu
MsgBox(0,"",_IEPropertyGet($oIE3, "locationurl"))
Sleep(3000)
_IEQuit($oIE2)
Sleep(3000)
_IEQuit($oIE3)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Kerjean
Niveau 1
Niveau 1
Messages : 9
Enregistré le : ven. 02 sept. 2016 19:03
Status : Hors ligne

Re: Manipuler Onglets IE avec autoit

#3

Message par Kerjean »

Super Walkson merci beaucoup !

Du coup chaque onglet IE correspond à un objet IE qu'on peut retrouver avec $oIEOnglet = _IEAttach("substring du titre de l'onglet") et donc fermer avec _IEQuit($oIEOnglet).

Je cherchais une fonction qui soit l'equivalent de WinList() mais pour les objets IE afin de ne pas avoir à forcément connaître les données de l'onglet pour le fermer (fermer l'onglet s'il ne correspond pas à certains critères). Je ne la trouvais pas toute faite mais avec ce que tu m'as dit pour _IEAttach() j'ai pu en faire une. Merci beaucoup !

PS, si certains y voient des améliorations je suis preneur :)
; fonction qui retourne un tableau[n][2], $tab[0][0] contient le nombre d'objets IE en cours d'execution,
; $tab[k][0] le titre de l'objet IE et $tab[k][1] l'objet IE directement
Func oIEList()
   Local $count = 0
   Local $ArraySize

   ; compter le nombre d'objets présents
   while 1
      Local $oIE
      $count += 1
      $oIE = _IEAttach("", "instance", $count)
      If(_IEPropertyGet($oIE, "locationurl") == 0) Then
         ExitLoop
      EndIf
   WEnd

   ; on stocke le nombre d'objets dans la variable
   $ArraySize = $count
   ; On réinitialise le compteur
   $count = 0

   ; on crée un tableau comme celui de la variable retour de winlist() et on l'initialise
   Local $tabRet[$ArraySize][2]
   $tabRet[0][0] = $ArraySize-1 ; nombre d'objets IE trouvés au total
   $tabRet[0][1] = -1 ; Tiroir non utilisé

   ; On stocke les données dans cette variable tableau
   while 1
      Local $oIE
      $count += 1
      $oIE = _IEAttach("", "instance", $count)

      If(_IEPropertyGet($oIE, "locationurl") == 0) Then
         ExitLoop
      EndIf

      $tabRet[$count][0] = _IEPropertyGet($oIE, "title")
      $tabRet[$count][1] = $oIE
   WEnd

   Return $tabRet
EndFunc
Je suis un Newbie mais j'apprends jour après jour
Répondre