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 :

Manipuler une Instance IE déjà ouverte


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Par défaut Manipuler une Instance IE déjà ouverte
    Bonjour,

    Je souhaite réaliser un fichier vbs qui me permet d'ouvrir dans plusieurs onglets Internet Explorer, des sites sécurisés (nécessite login et mot de passe).

    Grace à l'aide de ce forum j'ai abouti à mon objectif, mais chaque nouvel onglet nécessite que la procédure du précédent soit achevée, ce qui est relativement long (entre 10 et 15 onglets).

    Afin de remédier à cela, j'ai songé à la méthodologie suivante: Faire un vbs qui ouvre une instance IE, puis exécute d'autres fichiers vbs (un pour chaque onglet), ce qui permet d'avoir une connexion quasi simultanée de l'ensemble des sites sur l'instance IE.

    Voici le code de mon fichier principal
    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
     
    Option Explicit
     
    'Déclaration des variables
    Dim IE
    Dim Shell
    Dim HandleIE
    Dim Onglet1
     
    'Définit l'objet WshShell qui permettra d'accéder aux fonctions du système
    Set Shell= WScript.CreateObject("WScript.Shell")
     
    'Ouvre une Instance d'internet explorer
    Set IE = WScript.CreateObject("InternetExplorer.Application")
     
    'Configuration d'Internet Explorer
    IE.visible=True
    IE.Silent = True
     
    'Récupére le handle de l'Instance d'Internet Explorer
    HandleIE = IE.HWND
     
    'Exécution du fichier Onglet1.vbs 
    Set Onglet1 = Shell.Exec ("WScript ""C:\...\...\Onglet1.vbs"" " & """" & HandleIE & """")
     
    'Exécution du fichier Onglet2.vbs 
    Set Onglet1 = Shell.Exec ("WScript ""C:\...\...\Onglet2.vbs"" " & """" & HandleIE & """")
     
    'Exécution du fichier Onglet3.vbs ..... et ainsi de site pour tous les sites
     
    'Libére la mémoire
    Set Shell = nothing
    set Onglet1 = nothing
    Voici le code type pour chaque onglet

    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
     
    Option Explicit
     
    'Déclaration des variables et constantes
    Dim IE
    Dim Shell, shellApp
    Dim HandleIE
    Dim FenIE ,shellwindows
    Const AjoutOnglet = 2048
     
    'Définit l'objet WshShell qui permettra d'accéder aux fonctions du système
    Set Shell= WScript.CreateObject("WScript.Shell")
     
    'Récupére le handle de l'Instance d'Internet Explorer
    HandleIE = wscript.arguments(0)
     
    'Définit l'objet Application qui permettra d'accéder aux applcations du système
    Set shellApp = WScript.CreateObject("Shell.Application")
     
    'Boucle sur l'ensemble des fenêtre IE pour trouver celle correspondante au HandleIE
    Set shellwindows = shellApp.Windows
    For Each FenIE in Shellwindows
    	If FenIE.hwnd =  HandleIE Then
    		Set IE=FenIE
    		Exit for
    	End If
    Next
     
    'Ouvre l'URL du site dans un nouvel onglet
    IE.Navigate2 "www......com",AjoutOnglet
     
    'ici le code de connexion avec login et mot de passe
     
    'Libére la mémoire
    Set shell = Nothing
    Set shellwindows = Nothing
    Set shellApp = Nothing
    Set shellwindows = Nothing
    J'arrive donc à renvoyer le handle de l'instance IE grâce aux arguments, faire une boucle pour récupérer l'instance précédemment ouverte (enfin je crois), mais malheureusement aucune réaction sur l'instance IE déjà ouverte, pas de création d'un nouvel onglet, ni de connexion sur l'url.

    Si quelqu'un peut m'aiguiller, ce serait sympa, d'autant que je suis novice.
    Merci à tous

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Par défaut
    Après un week-end passé à cherché la solution, je me réponds à moi même.
    Pour comparer le handle récupéré par l'argument et le handle de l'instance IE en cours d'exécution, il faut les convertir en string via l'instruction Cstr.

    Pour ceux que ce code intéresse, je met la version corrigée:

    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
    
    Option Explicit
    
    'Déclaration des variables et constantes
    Dim IE
    Dim Shell, shellApp
    Dim HandleIE
    Dim FenIE ,shellwindows
    Const AjoutOnglet = 2048
    
    'Définit l'objet WshShell qui permettra d'accéder aux fonctions du système
    Set Shell= WScript.CreateObject("WScript.Shell")
    
    'Récupére le handle de l'Instance d'Internet Explorer
    HandleIE = wscript.arguments(0)
    
    'Définit l'objet Application qui permettra d'accéder aux applcations du système
    Set shellApp = WScript.CreateObject("Shell.Application")
    	
    'Boucle sur l'ensemble des applications ouvertes pour trouver celle correspondante au HandleIE d'Internet Explorer
    Set shellwindows = shellApp.Windows
    For Each FenIE in shellwindows
    	If CStr(FenIE.hwnd) = CStr(HandleIE) Then
    		Set IE=FenIE
    		Exit for
    	End If
    Next
    
    'Ouvre l'URL du site dans un nouvel onglet
    IE.Navigate2 "www......com",AjoutOnglet
    
    'Libére la mémoire
    Set shell = Nothing
    Set shellwindows = Nothing
    Set shellApp = Nothing
    Set shellwindows = Nothing

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment fermer proprement une instance d'Excel ouvert avec VB ?
    Par Teddy7 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/04/2012, 16h23
  2. interagir avec une instance d'outlook ouverte
    Par Nicopilami dans le forum C#
    Réponses: 2
    Dernier message: 25/08/2010, 14h43
  3. Manipuler une instance excel indépendante dans webbrowser
    Par pocoloco dans le forum Composants VCL
    Réponses: 0
    Dernier message: 02/12/2009, 15h07
  4. Réponses: 4
    Dernier message: 04/12/2007, 19h35
  5. Réponses: 1
    Dernier message: 14/06/2007, 15h21

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