none
VB.NET: WebBrowsers multiples avec sessions séparées RRS feed

  • Question

  • Bonjour,

    Je développe actuellement un programme dont le but est de rechercher la présence éventuelle de nouvelles notifications sur un site web donné. Il peut y avoir plusieurs comptes sur lesquels la recherche doit être effectuée (les comptes étant configurés par l'utilisateur du programme).

    J'aimerais donc créer un contrôle WebBrowser pour chaque compte (je n'ai pas de problème sur ce point) et que chaque WebBrowser ait une session séparée, afin de pouvoir être connecté en même temps sur chacun des comptes.

    En faisant des recherches, j'ai trouvé deux solutions potentielles:

    - L'utilisation des sessions "cookieless". Cependant,je n'ai pas très bien compris comment cela fonctionne. Si cela pourrait résoudre mon problème, pourriez-vous m'expliquer comment l'utiliser?

    - L'ouverture d'une instance différente d'un programme dédié (programme d'une fenêtre comportant un WebBrowser) en lui passant les identifiants (cryptés) en arguments. Cependant, cela pose plusieurs problèmes: premièrement, mon programme fonctionne discrètement en tache d'arrière plan, et je ne souhaite pas que 10 instances différentes (par exemple) d'un programme tournent en même temps de façon permanente ; deuxièmement, le programme hébergeant le WebBrowser doit pouvoir communiquer à mon programme le code source du WebBrowser, afin qu'il puisse déterminer si de nouvelles notifications sont présentes (ce que je ne sais pas faire).

    J'ai également pensé à utiliser un composant différent du basique WebBrowser, mais je n'en ai pas trouvé.

    Comment puis-je donc pallier à mon problème?

    Merci de votre aide.



    mardi 9 février 2016 17:11

Toutes les réponses

  • Bonjour, E__Man,

    Pouvez-vous partager un extrait du code utilisé?
    Je vous remercie par avance de votre retour.

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mercredi 10 février 2016 16:21
    Modérateur
  • Bonjour,

    Voici un extrait de mon code:

    Public Class Form1 Public WithEvents WebBrowsers As New List(Of WebBrowser) Public comptes As New List(Of Compte) 'Compte étant une classe que j'ai créée Public connecte as New List(Of Boolean) Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'récupération de la liste des comptes dans un fichier End Sub Protected Friend Sub WebBrowser_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Dim index As Integer = WebBrowsers.IndexOf(DirectCast(sender, WebBrowser)) If Not connecte(i) Then Dim u As HtmlElement = DirectCast(sender, WebBrowser).Document.GetElementById("nomdutilisateur") Dim p As HtmlElement = DirectCast(sender, WebBrowser).Document.GetElementById("mdp") u.SetAttribute("value", comptes(index).UserName) p.SetAttribute("value", comptes(index).Password) DirectCast(sender, WebBrowser).Document.GetElementById("connexion").InvokeMember("click") Else Dim n As HtmlElement = DirectCast(sender, WebBrowser).Document.GetElementById("nouvellesnotifications") If n > 0 Then MsgBox("Vous avez " & n & " nouvelles notifications!") End If End If End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
            For i = 0 To WebBrowsers.Count - 1
                If connecte(i) Then
                    WebBrowsers(i).Navigate("http://monsite") 'normalement, je fais simplement un Refresh, mais le refresh ne déclenche pas l'événement DocumentCompleted et j'ai voulu simplifier au maximum

                End If
            Next
        End Sub

    End Class



    • Modifié E__Man mercredi 10 février 2016 17:43
    mercredi 10 février 2016 17:43