Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Attente chargement page avec multiframe

2 réponses
Avatar
Nicolas
Bonjour,

Voici mon problème :

Dans une Form en Csharp j'ai une fenêtre Webbrowser. Dans cette fenêtre
il s'affiche souvent des pages Web avec des frames. Mon problème réside
dans le fait que un simple "while (axWebBrowser11.Busy)" ne suffit pas
car cette ligne n'attend pas la fin du chargement de TOUTES les frames.
Comme mon code doit travailler sur le contenu des frames, ça plante mon
programme si une des frames n'est pas chargée.

Je dois donc faire appel à une fonction "lourde" qui prend 100% de ma CPU :

for (int boucle1=0; boucle1<=fin; boucle1++)
{
for (int boucleinterne=0; boucleinterne<=1000; boucleinterne++)
{

Application.DoEvents();
}

}


Comment puis-je faire pour attendre la fin du chargement de toutes les
frames avant de passer à la suite du programme ?

Merci
Nicolas

2 réponses

Avatar
Simon Mourier [MS]
Ce n'est pas la bonne méthode. Il faut plutôt se connecter aux évènements
crées par IE (objet WebBrowser), comme par exemple NavigateComplete,
NavigateComplete2, etc...

Voir ici:
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/ifaces/iwebbrowser2/statusbar.asp

Simon.

"Nicolas" a écrit dans le message de news:
edrGqdO$
Bonjour,

Voici mon problème :

Dans une Form en Csharp j'ai une fenêtre Webbrowser. Dans cette fenêtre il
s'affiche souvent des pages Web avec des frames. Mon problème réside dans
le fait que un simple "while (axWebBrowser11.Busy)" ne suffit pas car
cette ligne n'attend pas la fin du chargement de TOUTES les frames. Comme
mon code doit travailler sur le contenu des frames, ça plante mon
programme si une des frames n'est pas chargée.

Je dois donc faire appel à une fonction "lourde" qui prend 100% de ma CPU
:

for (int boucle1=0; boucle1<=fin; boucle1++)
{ for (int boucleinterne=0; boucleinterne<00; boucleinterne++)
{

Application.DoEvents();
}
}


Comment puis-je faire pour attendre la fin du chargement de toutes les
frames avant de passer à la suite du programme ?

Merci
Nicolas


Avatar
Nicolas
Merci,

Mais etant un peu legé en C# et en Winform, je ne vois pas comment faire
inter-agir mon programme qui doit attendre la fin du chargement de toutes les
frames sur l'axWebbrowser et l'event NavigateComplete2.
Si j'ai bien compris, le code "contenu dans" l'event NavigateComplete2 se
lance qd toute la page est chargé (frames ou pas) mais comment dois-je coder
l'attente de ce chargement dans mon programe principal qui lui attend la fin
de ce chargement pour poursuivre ?



"Simon Mourier [MS]" wrote:

Ce n'est pas la bonne méthode. Il faut plutôt se connecter aux évènements
crées par IE (objet WebBrowser), comme par exemple NavigateComplete,
NavigateComplete2, etc...

Voir ici:
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/ifaces/iwebbrowser2/statusbar.asp

Simon.

"Nicolas" a écrit dans le message de news:
edrGqdO$
> Bonjour,
>
> Voici mon problème :
>
> Dans une Form en Csharp j'ai une fenêtre Webbrowser. Dans cette fenêtre il
> s'affiche souvent des pages Web avec des frames. Mon problème réside dans
> le fait que un simple "while (axWebBrowser11.Busy)" ne suffit pas car
> cette ligne n'attend pas la fin du chargement de TOUTES les frames. Comme
> mon code doit travailler sur le contenu des frames, ça plante mon
> programme si une des frames n'est pas chargée.
>
> Je dois donc faire appel à une fonction "lourde" qui prend 100% de ma CPU
> :
>
> for (int boucle1=0; boucle1<=fin; boucle1++)
> { for (int boucleinterne=0; boucleinterne<00; boucleinterne++)
> {
>
> Application.DoEvents();
> }
> }
>
>
> Comment puis-je faire pour attendre la fin du chargement de toutes les
> frames avant de passer à la suite du programme ?
>
> Merci
> Nicolas