Comment attendre la fin de WebBrowser.Navigate pour demarrer un traitement
3 réponses
Atlas informatique
Bonjour,
Je voudrais savoir comment faire un pg qui fait
while (nonfini)
WebBrowser.Navigate (lien)
nonfini=traitement(WebBrowser)
wend
Ce programme lance le traitement avant la fin du chargement du navigateur.
Et comme le chargement tourne, le programme ne rafraichit pas le navigateur
???
Comment faire pour s'en sortir.
De plus, la fin n'est jamais atteint.
Si on lance en debug avec un point d'arret sur le traitement, le pg marche
bien jusqu'au bout, car on prend la main et donc on laisse le navigateur
charger sa page.
Merci pour votre aide
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice Henrio
Atlas informatique a écrit :
Bonjour, Je voudrais savoir comment faire un pg qui fait while (nonfini) WebBrowser.Navigate (lien) nonfini=traitement(WebBrowser) wend
Ce programme lance le traitement avant la fin du chargement du navigateur. Et comme le chargement tourne, le programme ne rafraichit pas le navigateur ??? Comment faire pour s'en sortir. De plus, la fin n'est jamais atteint. Si on lance en debug avec un point d'arret sur le traitement, le pg marche bien jusqu'au bout, car on prend la main et donc on laisse le navigateur charger sa page. Merci pour votre aide
J'espère ne pas être à côté de la plaque mais j'avais ce genre de problème et je l'ai résolu par des DoEvents. Quant à savoir pourquoi ?
Public Sub InitWBHistoire() 'Bien que cela ne se voit pas dans l'exécution pas à pas, la méthode .navigate fait appel 'à la méthode WBHistoire_BeforeNavigate2 puis à WBHistoire_DocumentComplete. Ce premier appel 'avec l'URL Chemin & "Histoires.htm" permet d'initialiser la collection Paragraphes. 'Dans le fichier Histoire.htm, les titres de paragraphes sont en rouge et déterminent des balises <DIV>, 'les liens vers les dynasties sont en bleu et correspondent à des balises ancre <A>. With FormeHistoire.WBHistoire .Navigate "file://" & Chemin & "Histoires.htm" End With DoEvents End Sub
Private Sub WBHistoire_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) 'Cette méthode n'est utile que pour afficher la forme Dynastie et son WebBrowser. 'L'URL = Chemin & "Histoires.htm" au premier appel et donc rien ne se passe, 'on passe à WBHistoire_DocumentComplete If InStr(URL, "/Dynasties.htm#") > 0 Then Cancel = True 'Il faut arrêter la navigation dans le WBHistoire car l'URL concernée ne fait pas 'référence à une ancre du texte de ce controle. FormeDynasties.Visible = True FormeDynasties.WBDynasties.Navigate URL End If DoEvents End Sub
Private Sub WBHistoire_DocumentComplete(ByVal pDisp As Object, URL As Variant) 'Cette méthode permet de positionner le texte du WebBrowser Histoire en fonction de l'année 'L'URL est la première fois Chemin & "Histoires.htm". Les appels suivants de la méthode 'correspondent à un clic sur une ancre (texte en bleu). cette ancre doit contenir le symbole & 'dans son nom pour déclencher un évènement. On doit faire ces actions dans la méthode DocumentComplete 'car sinon les infos du document ne sont pas encore toutes chargées.
ICI TRAITEMENT DU DOCUMENT
end sub
Atlas informatique a écrit :
Bonjour,
Je voudrais savoir comment faire un pg qui fait
while (nonfini)
WebBrowser.Navigate (lien)
nonfini=traitement(WebBrowser)
wend
Ce programme lance le traitement avant la fin du chargement du navigateur.
Et comme le chargement tourne, le programme ne rafraichit pas le navigateur
???
Comment faire pour s'en sortir.
De plus, la fin n'est jamais atteint.
Si on lance en debug avec un point d'arret sur le traitement, le pg marche
bien jusqu'au bout, car on prend la main et donc on laisse le navigateur
charger sa page.
Merci pour votre aide
J'espère ne pas être à côté de la plaque mais j'avais ce genre de
problème et je l'ai résolu par des DoEvents. Quant à savoir pourquoi ?
Public Sub InitWBHistoire()
'Bien que cela ne se voit pas dans l'exécution pas à pas, la méthode
.navigate fait appel
'à la méthode WBHistoire_BeforeNavigate2 puis à
WBHistoire_DocumentComplete. Ce premier appel
'avec l'URL Chemin & "Histoires.htm" permet d'initialiser la
collection Paragraphes.
'Dans le fichier Histoire.htm, les titres de paragraphes sont en
rouge et déterminent des balises <DIV>,
'les liens vers les dynasties sont en bleu et correspondent à des
balises ancre <A>.
With FormeHistoire.WBHistoire
.Navigate "file://" & Chemin & "Histoires.htm"
End With
DoEvents
End Sub
Private Sub WBHistoire_BeforeNavigate2(ByVal pDisp As Object, URL As
Variant, flags As Variant, TargetFrameName As Variant, PostData As
Variant, Headers As Variant, Cancel As Boolean)
'Cette méthode n'est utile que pour afficher la forme Dynastie et son
WebBrowser.
'L'URL = Chemin & "Histoires.htm" au premier appel et donc rien ne se passe,
'on passe à WBHistoire_DocumentComplete
If InStr(URL, "/Dynasties.htm#") > 0 Then
Cancel = True 'Il faut arrêter la navigation dans le WBHistoire car
l'URL concernée ne fait pas
'référence à une ancre du texte de ce controle.
FormeDynasties.Visible = True
FormeDynasties.WBDynasties.Navigate URL
End If
DoEvents
End Sub
Private Sub WBHistoire_DocumentComplete(ByVal pDisp As Object, URL As
Variant)
'Cette méthode permet de positionner le texte du WebBrowser Histoire en
fonction de l'année
'L'URL est la première fois Chemin & "Histoires.htm". Les appels
suivants de la méthode
'correspondent à un clic sur une ancre (texte en bleu). cette ancre doit
contenir le symbole &
'dans son nom pour déclencher un évènement. On doit faire ces actions
dans la méthode DocumentComplete
'car sinon les infos du document ne sont pas encore toutes chargées.
Bonjour, Je voudrais savoir comment faire un pg qui fait while (nonfini) WebBrowser.Navigate (lien) nonfini=traitement(WebBrowser) wend
Ce programme lance le traitement avant la fin du chargement du navigateur. Et comme le chargement tourne, le programme ne rafraichit pas le navigateur ??? Comment faire pour s'en sortir. De plus, la fin n'est jamais atteint. Si on lance en debug avec un point d'arret sur le traitement, le pg marche bien jusqu'au bout, car on prend la main et donc on laisse le navigateur charger sa page. Merci pour votre aide
J'espère ne pas être à côté de la plaque mais j'avais ce genre de problème et je l'ai résolu par des DoEvents. Quant à savoir pourquoi ?
Public Sub InitWBHistoire() 'Bien que cela ne se voit pas dans l'exécution pas à pas, la méthode .navigate fait appel 'à la méthode WBHistoire_BeforeNavigate2 puis à WBHistoire_DocumentComplete. Ce premier appel 'avec l'URL Chemin & "Histoires.htm" permet d'initialiser la collection Paragraphes. 'Dans le fichier Histoire.htm, les titres de paragraphes sont en rouge et déterminent des balises <DIV>, 'les liens vers les dynasties sont en bleu et correspondent à des balises ancre <A>. With FormeHistoire.WBHistoire .Navigate "file://" & Chemin & "Histoires.htm" End With DoEvents End Sub
Private Sub WBHistoire_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) 'Cette méthode n'est utile que pour afficher la forme Dynastie et son WebBrowser. 'L'URL = Chemin & "Histoires.htm" au premier appel et donc rien ne se passe, 'on passe à WBHistoire_DocumentComplete If InStr(URL, "/Dynasties.htm#") > 0 Then Cancel = True 'Il faut arrêter la navigation dans le WBHistoire car l'URL concernée ne fait pas 'référence à une ancre du texte de ce controle. FormeDynasties.Visible = True FormeDynasties.WBDynasties.Navigate URL End If DoEvents End Sub
Private Sub WBHistoire_DocumentComplete(ByVal pDisp As Object, URL As Variant) 'Cette méthode permet de positionner le texte du WebBrowser Histoire en fonction de l'année 'L'URL est la première fois Chemin & "Histoires.htm". Les appels suivants de la méthode 'correspondent à un clic sur une ancre (texte en bleu). cette ancre doit contenir le symbole & 'dans son nom pour déclencher un évènement. On doit faire ces actions dans la méthode DocumentComplete 'car sinon les infos du document ne sont pas encore toutes chargées.
ICI TRAITEMENT DU DOCUMENT
end sub
parci
On Thu, 13 Dec 2007 20:45:04 +0100, "Atlas informatique" wrote:
Bonjour, Je voudrais savoir comment faire un pg qui fait while (nonfini) WebBrowser.Navigate (lien) nonfini=traitement(WebBrowser) wend
Ce programme lance le traitement avant la fin du chargement du navigateur. Et comme le chargement tourne, le programme ne rafraichit pas le navigateur ??? Comment faire pour s'en sortir. De plus, la fin n'est jamais atteint. Si on lance en debug avec un point d'arret sur le traitement, le pg marche bien jusqu'au bout, car on prend la main et donc on laisse le navigateur charger sa page. Merci pour votre aide
Il faut utiliser les événements et tester éventuellement les paramètres. Par exemple :
Private m_sUrl As String
Private Sub NavigateTo(sUrl As String) m_sUrl = sUrl WebBrowser1.Navigate sUrl End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) If (pDisp Is WebBrowser1.Object) Then If m_sUrl = Cstr(URL) Then TraiteDoc WebBrowser1.Document End If End If End Sub
Private Sub TraiteDoc(hDoc As HtmlDocument) ' faire des choses End Sub
Si tu as une liste de liens à traiter, tu peux par exemple charger cette liste dans un comobox. Le changement de sélection déclenche la navigation. A la fin du traitement, tu passes à l'item suivant dans le combo en modifiant la sélection.
Private m_sUrl As String
' soit cbUrls le combobox Private Sub ChargeUrls() With cbUrls .Clear ' chargement avec une boucle et AddItem ' .... ' lance la première navigation .ListIndex = 0 End With End Sub
Private Sub cbUrls_Click() m_sUrl = cbUrls.Text WebBrowser1.Navigate cbUrls.Text End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) If (pDisp Is WebBrowser1.Object) Then If m_sUrl = Cstr(URL) Then TraiteDoc WebBrowser1.Document End If End If End Sub
Private Sub TraiteDoc(hDoc As HTMLDocument) ' faire des choses
' poursuivre avec le liens suivant Dim i As Long i = cbUrls.ListIndex + 1 If i < (cbUrls.ListCount) Then cbUrls.ListIndex = i Else MsgBox "C'est fini" End If
End Sub
La mauvaise nouvelle pour finir : ça fonctionne en principe sans problème sauf que j'ai eu des problèmes bizarres et aléatoire de faute de page avec la dll MSHTML (que j'utilise pour analyser les documents chargés dans le WebBrowser) lors de chargement nombreux et répétitifs de documents dans un WebBrowser. L'unique solution que j'ai trouvé pour les éviter, a été de recréer l'instance du WebBrowser avant toute navigation (ça signifie mettre le WebBrowser sur un form dédié et recréer une instance de ce form puis l'inclure dans le formulaire principal). Même problème d'ailleurs en utilisant directement IE plutôt que le contrôle WebBrowser. Les patchs existants pour MSHTML n'ont pas donné non plus de résultat.
On Thu, 13 Dec 2007 20:45:04 +0100, "Atlas informatique"
<atlasinformatique@free.fr> wrote:
Bonjour,
Je voudrais savoir comment faire un pg qui fait
while (nonfini)
WebBrowser.Navigate (lien)
nonfini=traitement(WebBrowser)
wend
Ce programme lance le traitement avant la fin du chargement du navigateur.
Et comme le chargement tourne, le programme ne rafraichit pas le navigateur
???
Comment faire pour s'en sortir.
De plus, la fin n'est jamais atteint.
Si on lance en debug avec un point d'arret sur le traitement, le pg marche
bien jusqu'au bout, car on prend la main et donc on laisse le navigateur
charger sa page.
Merci pour votre aide
Il faut utiliser les événements et tester éventuellement les
paramètres. Par exemple :
Private m_sUrl As String
Private Sub NavigateTo(sUrl As String)
m_sUrl = sUrl
WebBrowser1.Navigate sUrl
End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As
Variant)
If (pDisp Is WebBrowser1.Object) Then
If m_sUrl = Cstr(URL) Then
TraiteDoc WebBrowser1.Document
End If
End If
End Sub
Private Sub TraiteDoc(hDoc As HtmlDocument)
' faire des choses
End Sub
Si tu as une liste de liens à traiter, tu peux par exemple charger
cette liste dans un comobox. Le changement de sélection déclenche la
navigation. A la fin du traitement, tu passes à l'item suivant dans le
combo en modifiant la sélection.
Private m_sUrl As String
' soit cbUrls le combobox
Private Sub ChargeUrls()
With cbUrls
.Clear
' chargement avec une boucle et AddItem
' ....
' lance la première navigation
.ListIndex = 0
End With
End Sub
Private Sub cbUrls_Click()
m_sUrl = cbUrls.Text
WebBrowser1.Navigate cbUrls.Text
End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As
Variant)
If (pDisp Is WebBrowser1.Object) Then
If m_sUrl = Cstr(URL) Then
TraiteDoc WebBrowser1.Document
End If
End If
End Sub
Private Sub TraiteDoc(hDoc As HTMLDocument)
' faire des choses
' poursuivre avec le liens suivant
Dim i As Long
i = cbUrls.ListIndex + 1
If i < (cbUrls.ListCount) Then
cbUrls.ListIndex = i
Else
MsgBox "C'est fini"
End If
End Sub
La mauvaise nouvelle pour finir : ça fonctionne en principe sans
problème sauf que j'ai eu des problèmes bizarres et aléatoire de faute
de page avec la dll MSHTML (que j'utilise pour analyser les documents
chargés dans le WebBrowser) lors de chargement nombreux et répétitifs
de documents dans un WebBrowser. L'unique solution que j'ai trouvé
pour les éviter, a été de recréer l'instance du WebBrowser avant toute
navigation (ça signifie mettre le WebBrowser sur un form dédié et
recréer une instance de ce form puis l'inclure dans le formulaire
principal). Même problème d'ailleurs en utilisant directement IE
plutôt que le contrôle WebBrowser. Les patchs existants pour MSHTML
n'ont pas donné non plus de résultat.
On Thu, 13 Dec 2007 20:45:04 +0100, "Atlas informatique" wrote:
Bonjour, Je voudrais savoir comment faire un pg qui fait while (nonfini) WebBrowser.Navigate (lien) nonfini=traitement(WebBrowser) wend
Ce programme lance le traitement avant la fin du chargement du navigateur. Et comme le chargement tourne, le programme ne rafraichit pas le navigateur ??? Comment faire pour s'en sortir. De plus, la fin n'est jamais atteint. Si on lance en debug avec un point d'arret sur le traitement, le pg marche bien jusqu'au bout, car on prend la main et donc on laisse le navigateur charger sa page. Merci pour votre aide
Il faut utiliser les événements et tester éventuellement les paramètres. Par exemple :
Private m_sUrl As String
Private Sub NavigateTo(sUrl As String) m_sUrl = sUrl WebBrowser1.Navigate sUrl End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) If (pDisp Is WebBrowser1.Object) Then If m_sUrl = Cstr(URL) Then TraiteDoc WebBrowser1.Document End If End If End Sub
Private Sub TraiteDoc(hDoc As HtmlDocument) ' faire des choses End Sub
Si tu as une liste de liens à traiter, tu peux par exemple charger cette liste dans un comobox. Le changement de sélection déclenche la navigation. A la fin du traitement, tu passes à l'item suivant dans le combo en modifiant la sélection.
Private m_sUrl As String
' soit cbUrls le combobox Private Sub ChargeUrls() With cbUrls .Clear ' chargement avec une boucle et AddItem ' .... ' lance la première navigation .ListIndex = 0 End With End Sub
Private Sub cbUrls_Click() m_sUrl = cbUrls.Text WebBrowser1.Navigate cbUrls.Text End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) If (pDisp Is WebBrowser1.Object) Then If m_sUrl = Cstr(URL) Then TraiteDoc WebBrowser1.Document End If End If End Sub
Private Sub TraiteDoc(hDoc As HTMLDocument) ' faire des choses
' poursuivre avec le liens suivant Dim i As Long i = cbUrls.ListIndex + 1 If i < (cbUrls.ListCount) Then cbUrls.ListIndex = i Else MsgBox "C'est fini" End If
End Sub
La mauvaise nouvelle pour finir : ça fonctionne en principe sans problème sauf que j'ai eu des problèmes bizarres et aléatoire de faute de page avec la dll MSHTML (que j'utilise pour analyser les documents chargés dans le WebBrowser) lors de chargement nombreux et répétitifs de documents dans un WebBrowser. L'unique solution que j'ai trouvé pour les éviter, a été de recréer l'instance du WebBrowser avant toute navigation (ça signifie mettre le WebBrowser sur un form dédié et recréer une instance de ce form puis l'inclure dans le formulaire principal). Même problème d'ailleurs en utilisant directement IE plutôt que le contrôle WebBrowser. Les patchs existants pour MSHTML n'ont pas donné non plus de résultat.
Atlas informatique
J'ai pas trop bien compris comment je dois faire : while (nonfini) WebBrowser.Navigate (lien) nonfini=traitement(WebBrowser) wend
"Patrice Henrio" a écrit dans le message de news: #QIPN#
Atlas informatique a écrit : > Bonjour, > Je voudrais savoir comment faire un pg qui fait > while (nonfini) > WebBrowser.Navigate (lien) > nonfini=traitement(WebBrowser) > wend > > Ce programme lance le traitement avant la fin du chargement du
navigateur.
> Et comme le chargement tourne, le programme ne rafraichit pas le
navigateur
> ??? > Comment faire pour s'en sortir. > De plus, la fin n'est jamais atteint. > Si on lance en debug avec un point d'arret sur le traitement, le pg
marche
> bien jusqu'au bout, car on prend la main et donc on laisse le navigateur > charger sa page. > Merci pour votre aide > > J'espère ne pas être à côté de la plaque mais j'avais ce genre de problème et je l'ai résolu par des DoEvents. Quant à savoir pourquoi ?
Public Sub InitWBHistoire() 'Bien que cela ne se voit pas dans l'exécution pas à pas, la méthode .navigate fait appel 'à la méthode WBHistoire_BeforeNavigate2 puis à WBHistoire_DocumentComplete. Ce premier appel 'avec l'URL Chemin & "Histoires.htm" permet d'initialiser la collection Paragraphes. 'Dans le fichier Histoire.htm, les titres de paragraphes sont en rouge et déterminent des balises <DIV>, 'les liens vers les dynasties sont en bleu et correspondent à des balises ancre <A>. With FormeHistoire.WBHistoire .Navigate "file://" & Chemin & "Histoires.htm" End With DoEvents End Sub
Private Sub WBHistoire_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) 'Cette méthode n'est utile que pour afficher la forme Dynastie et son WebBrowser. 'L'URL = Chemin & "Histoires.htm" au premier appel et donc rien ne se
passe,
'on passe à WBHistoire_DocumentComplete If InStr(URL, "/Dynasties.htm#") > 0 Then Cancel = True 'Il faut arrêter la navigation dans le WBHistoire car l'URL concernée ne fait pas 'référence à une ancre du texte de ce controle. FormeDynasties.Visible = True FormeDynasties.WBDynasties.Navigate URL End If DoEvents End Sub
Private Sub WBHistoire_DocumentComplete(ByVal pDisp As Object, URL As Variant) 'Cette méthode permet de positionner le texte du WebBrowser Histoire en fonction de l'année 'L'URL est la première fois Chemin & "Histoires.htm". Les appels suivants de la méthode 'correspondent à un clic sur une ancre (texte en bleu). cette ancre doit contenir le symbole & 'dans son nom pour déclencher un évènement. On doit faire ces actions dans la méthode DocumentComplete 'car sinon les infos du document ne sont pas encore toutes chargées.
ICI TRAITEMENT DU DOCUMENT
end sub
J'ai pas trop bien compris comment je dois faire :
while (nonfini)
WebBrowser.Navigate (lien)
nonfini=traitement(WebBrowser)
wend
"Patrice Henrio" <patrice.henrio@laposte.net> a écrit dans le message de
news: #QIPN#cPIHA.4476@TK2MSFTNGP06.phx.gbl...
Atlas informatique a écrit :
> Bonjour,
> Je voudrais savoir comment faire un pg qui fait
> while (nonfini)
> WebBrowser.Navigate (lien)
> nonfini=traitement(WebBrowser)
> wend
>
> Ce programme lance le traitement avant la fin du chargement du
navigateur.
> Et comme le chargement tourne, le programme ne rafraichit pas le
navigateur
> ???
> Comment faire pour s'en sortir.
> De plus, la fin n'est jamais atteint.
> Si on lance en debug avec un point d'arret sur le traitement, le pg
marche
> bien jusqu'au bout, car on prend la main et donc on laisse le navigateur
> charger sa page.
> Merci pour votre aide
>
>
J'espère ne pas être à côté de la plaque mais j'avais ce genre de
problème et je l'ai résolu par des DoEvents. Quant à savoir pourquoi ?
Public Sub InitWBHistoire()
'Bien que cela ne se voit pas dans l'exécution pas à pas, la méthode
.navigate fait appel
'à la méthode WBHistoire_BeforeNavigate2 puis à
WBHistoire_DocumentComplete. Ce premier appel
'avec l'URL Chemin & "Histoires.htm" permet d'initialiser la
collection Paragraphes.
'Dans le fichier Histoire.htm, les titres de paragraphes sont en
rouge et déterminent des balises <DIV>,
'les liens vers les dynasties sont en bleu et correspondent à des
balises ancre <A>.
With FormeHistoire.WBHistoire
.Navigate "file://" & Chemin & "Histoires.htm"
End With
DoEvents
End Sub
Private Sub WBHistoire_BeforeNavigate2(ByVal pDisp As Object, URL As
Variant, flags As Variant, TargetFrameName As Variant, PostData As
Variant, Headers As Variant, Cancel As Boolean)
'Cette méthode n'est utile que pour afficher la forme Dynastie et son
WebBrowser.
'L'URL = Chemin & "Histoires.htm" au premier appel et donc rien ne se
passe,
'on passe à WBHistoire_DocumentComplete
If InStr(URL, "/Dynasties.htm#") > 0 Then
Cancel = True 'Il faut arrêter la navigation dans le WBHistoire car
l'URL concernée ne fait pas
'référence à une ancre du texte de ce controle.
FormeDynasties.Visible = True
FormeDynasties.WBDynasties.Navigate URL
End If
DoEvents
End Sub
Private Sub WBHistoire_DocumentComplete(ByVal pDisp As Object, URL As
Variant)
'Cette méthode permet de positionner le texte du WebBrowser Histoire en
fonction de l'année
'L'URL est la première fois Chemin & "Histoires.htm". Les appels
suivants de la méthode
'correspondent à un clic sur une ancre (texte en bleu). cette ancre doit
contenir le symbole &
'dans son nom pour déclencher un évènement. On doit faire ces actions
dans la méthode DocumentComplete
'car sinon les infos du document ne sont pas encore toutes chargées.
J'ai pas trop bien compris comment je dois faire : while (nonfini) WebBrowser.Navigate (lien) nonfini=traitement(WebBrowser) wend
"Patrice Henrio" a écrit dans le message de news: #QIPN#
Atlas informatique a écrit : > Bonjour, > Je voudrais savoir comment faire un pg qui fait > while (nonfini) > WebBrowser.Navigate (lien) > nonfini=traitement(WebBrowser) > wend > > Ce programme lance le traitement avant la fin du chargement du
navigateur.
> Et comme le chargement tourne, le programme ne rafraichit pas le
navigateur
> ??? > Comment faire pour s'en sortir. > De plus, la fin n'est jamais atteint. > Si on lance en debug avec un point d'arret sur le traitement, le pg
marche
> bien jusqu'au bout, car on prend la main et donc on laisse le navigateur > charger sa page. > Merci pour votre aide > > J'espère ne pas être à côté de la plaque mais j'avais ce genre de problème et je l'ai résolu par des DoEvents. Quant à savoir pourquoi ?
Public Sub InitWBHistoire() 'Bien que cela ne se voit pas dans l'exécution pas à pas, la méthode .navigate fait appel 'à la méthode WBHistoire_BeforeNavigate2 puis à WBHistoire_DocumentComplete. Ce premier appel 'avec l'URL Chemin & "Histoires.htm" permet d'initialiser la collection Paragraphes. 'Dans le fichier Histoire.htm, les titres de paragraphes sont en rouge et déterminent des balises <DIV>, 'les liens vers les dynasties sont en bleu et correspondent à des balises ancre <A>. With FormeHistoire.WBHistoire .Navigate "file://" & Chemin & "Histoires.htm" End With DoEvents End Sub
Private Sub WBHistoire_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) 'Cette méthode n'est utile que pour afficher la forme Dynastie et son WebBrowser. 'L'URL = Chemin & "Histoires.htm" au premier appel et donc rien ne se
passe,
'on passe à WBHistoire_DocumentComplete If InStr(URL, "/Dynasties.htm#") > 0 Then Cancel = True 'Il faut arrêter la navigation dans le WBHistoire car l'URL concernée ne fait pas 'référence à une ancre du texte de ce controle. FormeDynasties.Visible = True FormeDynasties.WBDynasties.Navigate URL End If DoEvents End Sub
Private Sub WBHistoire_DocumentComplete(ByVal pDisp As Object, URL As Variant) 'Cette méthode permet de positionner le texte du WebBrowser Histoire en fonction de l'année 'L'URL est la première fois Chemin & "Histoires.htm". Les appels suivants de la méthode 'correspondent à un clic sur une ancre (texte en bleu). cette ancre doit contenir le symbole & 'dans son nom pour déclencher un évènement. On doit faire ces actions dans la méthode DocumentComplete 'car sinon les infos du document ne sont pas encore toutes chargées.