none
Internet Explorer 8/9 Ouvrir une page dans l'instance existante dans un nouvelle onglet ? RRS feed

  • Question

  • Bonjour a tous

    Comment faire quand IE est déjà exécuté, d'ouvrir une page IE sous forme d'un nouvelle ?

    Exist'il des commutateurs ?

        Process.Start("iexplore.exe", "http://------------------")

    Merci


    Cordialement, Troxsa
    lundi 22 novembre 2010 09:53
    Auteur de réponse

Réponses

  • Bonjour,

    il y a un paramétrage utilisateur dans les propriétés d'IE qui détermine si un nouveau navigateur ou un nouvel onglet doit être ouvert.

    Sinon on trouve deux propositions :

    - utiliser la librairie shdocvw. Il y un exemple ici Launch a URL in a tab in an existing IE window from C#

    - obtenir une référence au process IE courant, et ensuite via SendKeys envoyer des message au process IE

    Je n'ai testé aucun des 2 cas :)

    Cordialement

    • Marqué comme réponse TroxsaEditor mercredi 24 novembre 2010 14:22
    mardi 23 novembre 2010 11:03
    Modérateur
  • Bonjour,

     

    Merci pour la solution, c'est la deuxième qui fonctionne avec SHDocVw

    Avec les solutions précédente cela m'ouvre toujours une nouvelle instance malgré les paramètres IE ou je suis bon.

    Je donne le code retraduit en VB.net pour ceux qui en aurais besoin :-)

     

    Imports SHDocVw
    
      Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
        Dim iExplorerInstances As New ShellWindows()
        If iExplorerInstances.Count > 0 Then
          Dim enumerator As IEnumerator = iExplorerInstances.GetEnumerator()
          enumerator.MoveNext()
          Dim iExplorer As SHDocVw.InternetExplorer = DirectCast(enumerator.Current, SHDocVw.InternetExplorer)
          '0x800 means new tab
          iExplorer.Navigate("http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr", &H800)
          'No iexplore running, use your processinfo method
        Else
        End If
    
        'Dim found As Boolean = False
        'For Each iExplorer As SHDocVw.InternetExplorer In iExplorerInstances
        '  If iExplorer.Name = "Windows Internet Explorer" Then
        '    iExplorer.Navigate("http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr", &H800)
        '    found = True
        '    Exit For
        '  End If
        'Next
        ''run with processinfo
        'If Not found Then
        'End If
    
      End Sub
    

    Merci encore

     

     


    Cordialement, Troxsa
    • Marqué comme réponse TroxsaEditor mercredi 24 novembre 2010 14:38
    mercredi 24 novembre 2010 14:37
    Auteur de réponse

Toutes les réponses

  • Bonjour,

     

    Essayez avec ce code :

    ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");

                startInfo.WindowStyle = ProcessWindowStyle.Maximized;

                startInfo.Arguments = "www.microsoft.com";

                Process process = new Process();

                process.StartInfo = startInfo;

                process.Start();

     

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    lundi 22 novembre 2010 15:41
  • Bonjour Alex,

     

    ça ne fonctionne pas.

    voici le code en vb :)

        Dim starInfo = New ProcessStartInfo("IExplore.exe")
        starInfo.WindowStyle = ProcessWindowStyle.Maximized
        starInfo.Arguments = "http://-----------&application=MyDi-ry&aNR=" & "---"""
        Dim process = New Process
        process.StartInfo = starInfo
        process.Start()
    

    Ce code m'ouvre une nouvelle instance et n'utilise pas l'existante.
    je vais rechercher un peu avec le code que vous avez donner, y a peut etre un tit truc a faire ! :)

     

    A bientot


    Cordialement, Troxsa
    mardi 23 novembre 2010 08:03
    Auteur de réponse
  • Bonjour,

    il y a un paramétrage utilisateur dans les propriétés d'IE qui détermine si un nouveau navigateur ou un nouvel onglet doit être ouvert.

    Sinon on trouve deux propositions :

    - utiliser la librairie shdocvw. Il y un exemple ici Launch a URL in a tab in an existing IE window from C#

    - obtenir une référence au process IE courant, et ensuite via SendKeys envoyer des message au process IE

    Je n'ai testé aucun des 2 cas :)

    Cordialement

    • Marqué comme réponse TroxsaEditor mercredi 24 novembre 2010 14:22
    mardi 23 novembre 2010 11:03
    Modérateur
  • Bonjour,

     

    Merci pour la solution, c'est la deuxième qui fonctionne avec SHDocVw

    Avec les solutions précédente cela m'ouvre toujours une nouvelle instance malgré les paramètres IE ou je suis bon.

    Je donne le code retraduit en VB.net pour ceux qui en aurais besoin :-)

     

    Imports SHDocVw
    
      Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
        Dim iExplorerInstances As New ShellWindows()
        If iExplorerInstances.Count > 0 Then
          Dim enumerator As IEnumerator = iExplorerInstances.GetEnumerator()
          enumerator.MoveNext()
          Dim iExplorer As SHDocVw.InternetExplorer = DirectCast(enumerator.Current, SHDocVw.InternetExplorer)
          '0x800 means new tab
          iExplorer.Navigate("http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr", &H800)
          'No iexplore running, use your processinfo method
        Else
        End If
    
        'Dim found As Boolean = False
        'For Each iExplorer As SHDocVw.InternetExplorer In iExplorerInstances
        '  If iExplorer.Name = "Windows Internet Explorer" Then
        '    iExplorer.Navigate("http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr", &H800)
        '    found = True
        '    Exit For
        '  End If
        'Next
        ''run with processinfo
        'If Not found Then
        'End If
    
      End Sub
    

    Merci encore

     

     


    Cordialement, Troxsa
    • Marqué comme réponse TroxsaEditor mercredi 24 novembre 2010 14:38
    mercredi 24 novembre 2010 14:37
    Auteur de réponse
  • Bonjour TroXsA,

     

    Oui, c’est vrai, c’était seulement un contournement, je n’ai pas considéré important d’utiliser la même instanceJ.

     

    Est-ce que la solution de Nikho donne des bons résultats ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    mercredi 24 novembre 2010 14:39
  • Alex,

     

    Oui cela donne de très bon résultat, ce que j'aimerais trouvé maintenant c'est par quoi peut on remplacé "&H800"(qui dit nouvelle onglet), il doit bien y avoir d'autre option comme refrech avec une autre URL, ou ... ?

    ce qui est bien avec le code que j'ai retranscris en vb (voir le poste plus haut) est qu'on peu récupérer le nom de la fenêtre et lui dire que si il ne vois pas d'IE portant le nom la page ou qu'IE n'es pas ouvert on peut ouvrir dans ce cas une nouvelle instance

    avec le code ci dessus, si IE n'est pas ouvert cela ne fonctionnera pas a moins d'en modifier le code

     

    A bientot

     


    Cordialement, Troxsa
    mercredi 24 novembre 2010 16:32
    Auteur de réponse