Fonction de chargement de page internet

yammi - Modifié le 4 mars 2022 à 10:13
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 - 19 mars 2022 à 13:38
Bonjour,

Je cherche à "traduire" en webview2 une fonction qui permet d'attendre le chargement d'une page internet qui fonctionne avec un webbrowser.

J'ai commencé à avancer mais je bloque sur 2 lignes, si vous pouviez m'aider cela me permettrait de finaliser mon projet.

Le code qui fonctionne avec le webbrowser :


#Region "Page Loading Functions"
    Private Sub WaitForPageLoad()
        AddHandler wb.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
        While Not pageready
            Application.DoEvents()
        End While
        pageready = False
    End Sub

    Private Sub PageWaiter(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
        If wb.ReadyState = WebBrowserReadyState.Complete Then
            pageready = True
            RemoveHandler wb.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
        End If
    End Sub
#End Region





Voici la "traduction" :

Private Property Pageready As Boolean = False

#Region "Page Loading Functions"
    Public Sub WaitForPageLoad()
        AddHandler WebView21.NavigationCompleted, New webview2NavigationCompletedEventHandler(AddressOf PageWaiter)
        While Not Pageready
            Application.DoEvents()
        End While
        Pageready = False
    End Sub

    Public Sub PageWaiter(ByVal sender As Object, ByVal e As CoreWebView2InitializationCompletedEventArgs)
        If WebView21.ReadyState = WebBrowserReadyState.Complete Then
            Pageready = True
            RemoveHandler WebView21.NavigationCompleted, New webview2NavigationCompletedEventHandler(AddressOf PageWaiter)
        End If
    End Sub

#End Region


Voila ou je bloque :
AddHandler WebView21.NavigationCompleted, New webview2NavigationCompletedEventHandler(AddressOf PageWaiter)[/CODE]

New webview2NavigationCompletedEventHandler(AddressOf PageWaiter) ne fonctionne pas


[CODE=vb]If WebView21.ReadyState = WebBrowserReadyState.Complete Then


Je ne trouve pas la formule de remplacement


Merci beaucoup pour votre aide !

13 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 6 mars 2022 à 09:23
Bonjour
Et ainsi cela donne quoi ?
Private Property Pageready As Boolean = False

#Region "Page Loading Functions"

    Public Sub WaitForPageLoad()

         While Not Pageready
             If WebView21.ReadyState = WebBrowserReadyState.Complete Then Pageready = True
             Application.DoEvents()
        End While
        Pageready = False

    End Sub

#End Region


0
Bonjour et merci pour ce retour.

Dans la nouvelle version le webbrowser n'est plus présent en anticipation de la probable fin du fonctionnement de celui-ci dans les mois à venir (fin d'internet explorer en juin 2022).

Merci !
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 6 mars 2022 à 12:22
Bonjour
Tu ne dis pas si ma solution fonctionne .
Si c'est le cas libères la discussion avec le bouton adéquat


Et qu'en est-il de cette discussion : https://codes-sources.commentcamarche.net/forum/affich-10107476-pas-d-affichage-webview2 ?
Merci



0
Bonjour,

Elle ne peut pas fonctionner puisqu'il n'y a plus de webbrowser.

 If WebView21.ReadyState = WebBrowserReadyState.Complete Then Pageready = True


De plus, ReadyState n'est pas un membre de webview2.

Malheureusement cette solution ne fonctionne pas :-(
0

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

Posez votre question
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
7 mars 2022 à 11:12
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
7 mars 2022 à 14:08
Bonjour
Ceci pourrait vous aider


0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
7 mars 2022 à 14:52
Bonjour
J'ai testé et cela fonctionne
une Form avec le contrôle Webview et un Label


Et le code de test
Public Class Form1

    Private PageReady As Boolean

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        PageReady = False
        LabelText.Text = "Page non chargée"
        Do
            If PageReady = True Then Exit Do
            Application.DoEvents()
        Loop
        LabelText.text = "Page complètement chargée"

    End Sub

    Private Sub WebView21_NavigationCompleted(sender As Object, e As Microsoft.Web.WebView2.Core.CoreWebView2NavigationCompletedEventArgs) Handles WebView21.NavigationCompleted

        PageReady = True

    End Sub

End Class

0
Bonjour à tous,

Désolé pour le silence, j'étais en déplacement pro. Je vais tester tout cela prochainement et je ne manquerais pas de faire un retour !

Merci encore !
0
Bonjour à tous,

Enfin de retour je peux regarder le code. J'ai 2 erreurs :

1/ L'événement 'Load' est introuvable.

2/La clause Handles requiert une variable WithEvents définie dans le type conteneur ou l'un de ses types de base (relatif à "Handles WebView21.NavigationCompleted")

Merci à vous !
0
L'erreur N2 a été corrigé en ajoutant :

 Private WithEvents WebView21 As CoreWebView2


Reste à corriger : "L'événement 'Load' est introuvable"

Merci à vous !
0
Erratum ! Les erreurs étaient dus à une mauvaise intégration du code de ma part !

Je suis en train de tester un peu le tout mais il semble que le code ne réponde pas totalement à mon besoin, c'est à dire qu'il fonctionne très bien pour le 1er chargement mais pas pour les suivants. Je reviens dès que j'ai un peu plus expérimenté.

Merci à vous !
0
Bonjour à tous,

Après quelques toutes petites adaptations à l'intégration le code fonctionne MERCI !

Je viens de passer sur l'ordinateur qui était en commande et qui vient d'être monté et je retrouve le problème initial qui est que le webview n'apparait pas (https://codes-sources.commentcamarche.net/forum/affich-10107476-pas-d-affichage-webview2)

Le code de chargement permet de voir que la boucle tourne à l'infini et donc la form n'apparait pas. Si je supprime la boucle de chargement alors la form se lance mais le webview est absent comme auparavant !

Il semble donc que le problème initial est un problème de "moulinage" du webview... Je cherche, si une idée vous vient je prends !

Merci à vous !
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
19 mars 2022 à 13:38
Bonjour
L'idée qui me vient est que vous n'avez point les bases de la programmation en VB Net . Je vous invite donc à suivre ce cours : https://plasserre.developpez.com/cours/vb-net/
Il ne fera pas de vous un codeur hors pair mais cela vous permettra de vous poser les bonnes questions pour résoudre votre problème .


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
0
Rejoignez-nous