WebBrowser chargement terminer

Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017 - 2 déc. 2015 à 19:31
Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017 - 7 déc. 2015 à 19:47
Bonjour,

Je voudrais savoir comment faire pour que, une fois la page completement chargé, la suite de mon programme se fasse. J'ai essayer de tester un truc avec ProcessMax mais je n'ai pas réussi. Du coup pour le moment je fait avec un system de pause mais ce n'est pas très fiable car sa peut changer d'une machine a une autre.

Merci de votre aide.

7 réponses

Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017 1
5 déc. 2015 à 23:45
la page est déjà charger ! c est quand il y a me clic sur le bouton input que je veux attendre la fin de la page avant de passer à la suite.
1
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
6 déc. 2015 à 03:01
Bonsoir
Est-ce bien où j'ai indiqué que tu veux attendre la fin du chargement ?

Autre chose dans la boucle
For Each input As HtmlElement In inputs
il n'y a que le chargement que d'une seule page internet ? Si oui il faudrait mettre un Exit For pour sortir de la boucle et continuer le programme

 For Each input As HtmlElement In inputs
If input.GetAttribute("className") = "bgcdw_button bgcdw_login_form_login" Then 'La valeur input du bouton
input.InvokeMember("Click") 'Le clic a proprement parler
' C'est à partir d'ici que tu veux attendre la fin du chargement ?
Exit for ' à rajouter je pense
End If
Next
0
Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017 1 > vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024
6 déc. 2015 à 09:44
Non pas besoin du Exit for, le Next fait l'affaire. En effet, après le clic il y a le chargement de la page actuel puis le chargement de la page qui est celle qui est celle qui m'intéresse
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017
6 déc. 2015 à 10:19
A tester
Une fois la page internet commencée à être chargée on ajoute le gestionnaire d'attente avec le AddHandler. Une fois le chargement fini la procédure ProgrammeContinue s'exécute : elle libère l'instance du Webbrowser et continue le programme au Form3.Load .
Je ne garantis rien : je n'ai pas testé


Public Class Form1
Public url As String

Dim instance As SendKeys
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Then 'Verification que les textbox contiennent bien des caractères
MsgBox("Veillez complétez tous les champs ou vérifiez que vous avez rentrer les bonnes informations.") 'Texte afficher quand il y a une erreur
Else
WebBrowser1.Document.GetElementById("bgcdw_login_form_username").SetAttribute("value", TextBox1.Text) 'Completion de l'id du site via le contenue de la text.box1
WebBrowser1.Document.GetElementById("bgcdw_login_form_password").SetAttribute("value", TextBox2.Text) 'Completion du mdp du site via le contenue de la text.box1
Dim inputs As HtmlElementCollection 'Début de l'action de clic
inputs = WebBrowser1.Document.GetElementsByTagName("input") 'Définition du type de bouton
For Each input As HtmlElement In inputs
If input.GetAttribute("className") = "bgcdw_button bgcdw_login_form_login" Then 'La valeur input du bouton
input.InvokeMember("Click") 'Le clic a proprement parler
End If
Next
' chargement de la page Internet
url = WebBrowser1.Url.ToString
' Ajoute un gestionnaire d'événement qui continue le programme une fois le chargement terminé.
AddHandler webBrowser1.DocumentCompleted, New _
WebBrowserDocumentCompletedEventHandler(AddressOf Programmcontinue)
End If
End Sub

Private Sub Programmcontinue(ByVal sender As Object, _
ByVal e As WebBrowserDocumentCompletedEventArgs)

Dim webBrowserload As WebBrowser = CType(sender, WebBrowser)

' Supprime l'instance du WebBrowser maintenant que le chargement est terminé.
webBrowserLoad.Dispose()
' la suite de ton code une fois la page chargée
Form3.Show() 'Affichage de la form3
Me.Close()
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Me.Hide()
Form2.Show()
End Sub
0
Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017 1
6 déc. 2015 à 10:59
Alors sa marche bien mais j'ai un petit problème ^^ ! Sa m’ouvre la page 2 fois dans mon navigateur (chrome)
0
Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017 1
6 déc. 2015 à 11:03
Bon je viens de résoudre le problème ! Il fallait juste supprimer webBrowserLoad.Dispose()
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
2 déc. 2015 à 19:37
0
Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017 1
2 déc. 2015 à 23:15
Merci ! J'avais déjà été voir sur cette page mais j'avais pas compris le fonctionnement !
0
Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017 1
3 déc. 2015 à 22:30
du coup peut tu m'aider ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 déc. 2015 à 22:48
Bonjour,
La procédure évènementielle que t'a signalée Jordane45 se déclenche automatiquement à la fin du chargement de ton document.
Il te suffit alors d'y passer à true, par exemple, une variable booléenne (déclarée générale) de ton choix et de subordonner (dans ta procédure principale) la continuation de tes instructions au passage à True de cette variable (une simple boucle while fera l'affaire)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017 1
3 déc. 2015 à 23:06
OK je testé sa après les cours et je te tien au courant
0
Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017 1
4 déc. 2015 à 16:43
Bon ba je sais pas j'ai essayer différent truc mais sa marche pas ! Apres je débute en vb.net donc bon je vais rester avec mes timer.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
5 déc. 2015 à 15:03
Bonjour !
A tester d'après les informations suggérées par Jordane45
Code non testé par moi même

Private Sub LoadPage()

' Chargement de la page

' Créer une nouvelle instance du WebBrowser
Dim webBrowserForLoad As New WebBrowser()

' Ajoute un gestionnaire d'événement qui continue le programme une fois le chargement terminé.
AddHandler webBrowserForLoad.DocumentCompleted, New _
WebBrowserDocumentCompletedEventHandler(AddressOf Programmcontinue)

' On charge la page
webBrowserForLoad.Url = New Uri("\\myshare\help.html")

End Sub

Private Sub Programmcontinue(ByVal sender As Object, _
ByVal e As WebBrowserDocumentCompletedEventArgs)

Dim webBrowserForLoad As WebBrowser = CType(sender, WebBrowser)

' Supprime l'instance du WebBrowser maintenant que le chargement est terminé.
webBrowserLoad.Dispose()

' ici le code une fois le chargement terminé

End Sub

0
Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017 1
5 déc. 2015 à 16:33
Donc en gros tout mon code je doit le metre apres sa : webBrowserLoad.Dispose()

Voila tout mon code :
Public Class Form1
    Public url As String

    Dim instance As SendKeys
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Then 'Verification que les textbox contiennent bien des caractères
            MsgBox("Veillez complétez tous les champs ou vérifiez que vous avez rentrer les bonnes informations.") 'Texte afficher quand il y a une erreur
        Else
            WebBrowser1.Document.GetElementById("bgcdw_login_form_username").SetAttribute("value", TextBox1.Text) 'Completion de l'id du site via le contenue de la text.box1
            WebBrowser1.Document.GetElementById("bgcdw_login_form_password").SetAttribute("value", TextBox2.Text) 'Completion du mdp du site via le contenue de la text.box1
            Dim inputs As HtmlElementCollection 'Début de l'action de clic
            inputs = WebBrowser1.Document.GetElementsByTagName("input") 'Définition du type de bouton
            For Each input As HtmlElement In inputs
                If input.GetAttribute("className") = "bgcdw_button bgcdw_login_form_login" Then 'La valeur input du bouton
                    input.InvokeMember("Click") 'Le clic a proprement parler
                End If
            Next
            hbwait(15000)
            url = WebBrowser1.Url.ToString
            Form3.Show() 'Affichage de la form3
            Me.Close()
        End If
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Me.Hide()
        Form2.Show()
    End Sub

    Friend Sub hbwait(ByVal ms_to_wait As Long) 'Fonction d'attente
        Dim endwait As Double
        endwait = Environment.TickCount + ms_to_wait
        While Environment.TickCount < endwait
            System.Threading.Thread.Sleep(1)
            Application.DoEvents()
        End While
    End Sub

End Class


Si j'ai bien compris il faut que je mette juste cette partie la :
url = WebBrowser1.Url.ToString
            Form3.Show() 'Affichage de la form3
            Me.Close()


Se qui veut dire que les 2 private Sub je doit les mettre dans celui de mon bouton ?
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017
5 déc. 2015 à 23:19
Dans la Sub Button1_Click quelle instruction charge la page proprement dite ?
0
Dudule100 Messages postés 563 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 22 janvier 2017 1
7 déc. 2015 à 19:47
Aucune ! La page est deja chargé lors du lancement de la forme.
0
Rejoignez-nous