IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Scripter IE7 pour ouvrir plusieurs url dans des onglets


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Scripter IE7 pour ouvrir plusieurs url dans des onglets
    Bonjour à tous,

    Ouvrir quelques "internet.explorer" sur plusieurs url, je sais faire. Mais c'est très moche et je me demandais s'il y avait un moyen de scripter proprement ie7 pour ouvrir les differentes url dans des onglets d'une seule instance d'ie7. La littérature est peu abondante sur ce sujet, voire très décourageante ...

    Peut-être une astuce sur le registre ?
    Une fonction cachée de l'objet internet.explorer ?
    Hop!Team au top niveau. :-)

  2. #2
    Membre averti
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 341
    Points
    341
    Par défaut
    Salut,

    ca m'interesse aussi, j'ai cherché sans succès.

    A+
    Plus tu pédales moins vite, moins t'avances plus vite.

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Je me demande si l'astuce ne consisterait pas à bidouiller le registre comme suit :

    1. Sauvegarder la clé HKCU\Software\Microsoft\Internet Explorer\Main\Secondary Start Pages ou se trouve la page de démarrage
    2. Modifier cette clé pour y mettre les pages désirées
    3. Demarrer IE7
    4. Remettre la valeur initiale de la clé

    C'est faisable ?
    (((edit : je teste)))
    (((redit: c'est un peu plus compliqué)))
    Hop!Team au top niveau. :-)

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je ne connais pas grand chose à la manipulation d'IE, par contre je sais manipuler la BDR en VBS, et j'ai même des bouts de scripts tout près.
    N'hésite pas à poster si tu as des difficultés sur cette partie.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci de ta proposition d'aide : je veux bien savoir comment tester l'existence d'une Value dans la KeyPath, parce que là j'ai un petit souci quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Set oReg=GetObject("winmgmts:\\.\root\default:StdRegProv")
    KeyPath = "SOFTWARE\Microsoft\Internet Explorer"
    ValName = "Secondary Start Pages"
     
    oReg.GetMultiStringValue HKEY_CURRENT_USER, KeyPath, ValName, OldValues
    msgbox UBound( OldValues )
    j'ai un "Type incompatible UBound" qui m'énerve les nerfs
    je peux pas compter le nombre d'éléments de la multistring pour voir si c'est 0

    Je m'explique : Quand on change la page de démarrage d'IE, si il n'y a qu'un lien, il y a une value Start Page, sinon il y a une Value de nom Secondary Start Pages (et plus de StartPage). Donc il faut différencier le traitement :

    si MultiPage alors
    memoriser et changer secondary, lancer ie (pas trop loin), restaurer secondary
    sinon
    memoriser et detruire startpage, creer secondary, lancer ie, detruire secondary, restaurer startpage
    fin si
    finsi

    >>>edit : ah m*rde, j'ai oublié \Main dans le Path
    >>>re-edit : j'y suis presque
    Hop!Team au top niveau. :-)

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    bah ton code me semble bon, mais j'aurais quand même fait un dim OldValues pour être propre ^^

    Récup une autre valeur de la même clé et qui n'est pas en mlulti et affiche là.
    Si tu y arrives c'est que tu es dans le bon path.

    En général ton erreur arrive lorsque la variable n'a pas de valeur, et ce qui est le cas si to chemin vers la clé est mauvais.

    Dans regedit fait un clique droit sur un dossier et fait copier le nom de la clé, tu obtiens par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HKEY_CURRENT_CONFIG\System\CurrentControlSet\Enum\PCI
    Plus simple pour ne pas se tromper dans le chemin
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    A priori, ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Const HKEY_CURRENT_USER  = &H80000001
     
    strComputer = "."
    Set oReg=GetObject("winmgmts:\\.\root\default:StdRegProv")
     
    Set Shell = WScript.CreateObject("WScript.Shell")
     
    KeyPath = "SOFTWARE\Microsoft\Internet Explorer\Main\"
    ValName = "Secondary Start Pages"
     
    NewValues = Array( _
    	"http://www.lycos.fr", _
    	"http://www.google.fr", _
    	"http://www.voila.fr", _
    	"http://www.altavista.fr" )
     
    oReg.GetMultiStringValue HKEY_CURRENT_USER, KeyPath, ValName, OldValues
    if IsArray( OldValues ) then
     
    	' On est dans le cas d'un démarrage multi pages
    	' 1/ Mémoriser les anciennes valeurs (en fait c'est deja fait)
    	' oReg.GetMultiStringValue HKEY_CURRENT_USER, KeyPath, ValName, OldValues
     
    	' 2/ Remplacer par les nouvelles valeurs
    	oReg.SetMultiStringValue HKEY_CURRENT_USER, KeyPath, ValName, NewValues
    	wscript.sleep(1000)
    	' 3/ Lancer Internet Explorer
    	Shell.Run "iexplore"
    	' On fait une pause pour permettre le chargement des pages
    	wscript.sleep(1000)
     
    	' 4/ on remet les anciennes valeurs
    	oReg.SetMultiStringValue HKEY_CURRENT_USER, KeyPath, ValName, OldValues
    else
    	' On est dans le cas d'un démarrage mono page
    	' 1/ Mémoriser et détruire "Start Page"
    	oReg.GetStringValue HKEY_CURRENT_USER, KeyPath, "Start Page", StartPage
    	oReg.DeleteValue HKEY_CURRENT_USER, KeyPath, "Start Page"
     
    	' 2/ Creer "Secondary Start Pages"
    	oReg.SetMultiStringValue HKEY_CURRENT_USER, KeyPath, ValName, NewValues
    	wscript.sleep(1000)
     
    	' 3/ Lancer Internet Explorer
    	Shell.Run "iexplore"
    	wscript.sleep(1000)
     
    	' 4/ detruire "secondary start pages"
    	oReg.DeleteValue HKEY_CURRENT_USER, KeyPath, ValName
     
    	' 5/ recréer "Start Page"
    	oReg.SetStringValue HKEY_CURRENT_USER, KeyPath, "Start Page", StartPage
    end if
    wscript.quit
    Maintenant, je veux lancer IE autrement, parce que là Symantec autoprotect gueule comme un putois
    on peut faire avec set ie=createobject(InternetExplorer.Application) mais je sais pas lui dire ie.navigate "pages_de_demarrage"
    Hop!Team au top niveau. :-)

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Le script tel qu'il est semble fonctionner une fois ou pas, puis une autre fois, ou pas non plus...
    Ca doit venir du temps de mise à jour de la base de registre, et du temps de lancement d'IE7, et peut-être aussi de l'âge du capitaine...
    N'hésitez pas, après m'avoir chaudement félicité (après tout il s'agit d'une première mondiale ), à expérimenter ce script et proposer les petites améliorations qui s'imposent.
    Hop!Team au top niveau. :-)

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Bon en réponse à tes MP, si c'est ce truc là que tu cherches :
    on peut faire avec set ie=createobject(InternetExplorer.Application) mais je sais pas lui dire ie.navigate "pages_de_demarrage"
    Je n'ai pas de réponse car je n'ai jamais piloté IE.

    Après en ce qui concerne la BDR, tu sembles maitriser le code, en ce qui concerne la recherche des bonnes clés pour faire ce que l'on veut, je n'ai jamais rien trouvé de mieux que google.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  10. #10
    Futur Membre du Club
    Inscrit en
    Octobre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Je retire le "Résolu" car malgré mes tests sur différentes valeurs pour la fonction sleep(), je n'arrive pas à ouvrir toujours les 4 documents que je veux. De plus IE7 insère en premier onglet la page d'accueil de msn, ce dont je me moque éperdument.

    Comment être sûr que la mise à jour de la BdR est faite avant le lancement de ie7 ?
    Comment empêcher msn ?

    Mes neurones sont à court d'idées
    Hop!Team au top niveau. :-)

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Comment être sûr que la mise à jour de la BdR est faite avant le lancement de ie7 ?
    Tu lis les clés en question avant le lancement d'IE7 et tu verifies leurs valeurs ?

    Comment empêcher msn ?
    Peut être est ce du à l'odre des pages dans la clé.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  12. #12
    Membre averti
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 341
    Points
    341
    Par défaut
    Salut,

    partir dans des modifs de base de registre pour manipuler les onglets d'IE7, il y a forcément une autre solution.
    J'ai pas mal géléré pour trouver qquechose, voici une compile de ce que j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Set objShell = CreateObject("Shell.Application")
    Set objShellWindows = objShell.Windows
     
    If objShellWindows.Count = 0 Then
        Msgbox "No browser windows are open."
        Wscript.Quit
    Else
        strURL = "http://www.google.fr"
        Set objIE = objShellWindows.Item()
        objIE.Navigate(strURL)
        strURL = "http://www.yahoo.fr"
     
        objIE.Navigate(strURL)
        strURL = "http://www.lycos.fr"
     
        objIE.Navigate(strURL)    
    End If
    Ca n'a pas l'air d'etre trop mal sauf que je n'ai pas trouvé comment dire "va sur l'onglet N°2" je pensai faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set objIE = objShellWindows.Item(2)
    , mais ca n'a pas l'air de fonctionner.

    En tout cas , fonctionne et retourne le nombre total d'onglets ouverts moins 1.
    je repost si j'ai trouvé du neuf.

    A++
    Plus tu pédales moins vite, moins t'avances plus vite.

  13. #13
    Futur Membre du Club
    Inscrit en
    Octobre 2003
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    merci, je vais regarder dès que j'ai un (bon) moment.
    Hop!Team au top niveau. :-)

  14. #14
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    J'ai essayè ton code RadPAT..

    mais chez moi il ouvre une fenêtre par page....

    j'ai pas trouvé de solution ... mais j'ai une autre piste à proposer .. l'utilisation de l'argument Flag de la procédure Navigate2 avec comme valeur : navOpenInNewTab ..: 0x800 ..

    le seul truc et que si cela fonctionne en VB6 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Set IE = CreateObject("InternetExplorer.Application")
     
    IE.Visible = True
    flag = CLng(&H800)
     
    IE.Navigate2 "www.google.fr"
    IE.Navigate2 "www.Yahoo.com", flag
    ce n'est pas concluant en VBScript, après modification de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set IE = Wscript.CreateObject("InternetExplorer.Application")
    ..

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/07/2015, 11h32
  2. Réponses: 1
    Dernier message: 16/05/2014, 16h38
  3. Ouvrir plusieurs liens dans un onglet
    Par keokaz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/03/2014, 08h24
  4. Réponses: 1
    Dernier message: 04/02/2010, 20h41
  5. [AC-2007] Ouvrir plusieurs images dans des fenêtres distinctes
    Par al_bert dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/08/2009, 16h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo