WebBrowser chargement terminer

Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
- - Dernière réponse : Dudule100
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
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.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
1
Merci
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.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
> Dudule100
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
-
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
Dudule100
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
-
Alors sa marche bien mais j'ai un petit problème ^^ ! Sa m’ouvre la page 2 fois dans mon navigateur (chrome)
Dudule100
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
-
Bon je viens de résoudre le problème ! Il fallait juste supprimer webBrowserLoad.Dispose()
vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
> Dudule100
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
-
si le problème est résolu ferme le s'il te plait !
Merci
L'autre problème concerne un autre post
Dudule100
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
-
Maintenans j'ai un autre probleme, je voudrais que quand la page a fini de chargé, il vérifie si il y a ce texte dans la page avant d'afficher la forme 2 :
http://codes-sources.commentcamarche.net/forum/affich-10057125-webbrowser-verifie-texte#p10057125
Commenter la réponse de Dudule100
Messages postés
23618
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 décembre 2018
Dudule100
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
-
Merci ! J'avais déjà été voir sur cette page mais j'avais pas compris le fonctionnement !
Commenter la réponse de jordane45
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
0
Merci
du coup peut tu m'aider ?
Commenter la réponse de Dudule100
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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)
Commenter la réponse de ucfoutu
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
0
Merci
OK je testé sa après les cours et je te tien au courant
Commenter la réponse de Dudule100
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
0
Merci
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.
Commenter la réponse de Dudule100
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
0
Merci
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

Dudule100
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
-
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 ?
vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
> Dudule100
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
-
Dans la Sub Button1_Click quelle instruction charge la page proprement dite ?
Dudule100
Messages postés
561
Date d'inscription
jeudi 25 octobre 2012
Dernière intervention
22 janvier 2017
-
Aucune ! La page est deja chargé lors du lancement de la forme.
Commenter la réponse de vb95

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.