cpapy
-
21 mai 2017 à 12:16
JeuDuTaquin
Messages postés249Date d'inscriptionmardi 4 juillet 2017StatutMembreDernière intervention31 mai 2023
-
30 juil. 2017 à 02:02
Bonjour,
Ces quelques lignes sont censées d'afficher un Site et d'attendre que ce site soit complètement chargé avant de continuer.
Private Sub Form_Load() Dim Iappl As Long Dim Iexec As Long Dim RetCode As Long Dim J1 As Long Const STILL_ACTIVE = 259
JeuDuTaquin
Messages postés249Date d'inscriptionmardi 4 juillet 2017StatutMembreDernière intervention31 mai 20237 Modifié le 30 juil. 2017 à 02:05
Salut Cpapy,
"Ces quelques lignes sont censées d'afficher un Site et d'attendre que ce site soit complètement chargé avant de continuer. "
Non, le programme n'attend pas la fin du chargement du site!
Mais, la fin d'utilisation du programme chargé.
Il teste le Hook windows de l'application, et non pas la fin du chargement programme.
Le programme se charge et mets en pose l'appli, pour relacer ton programme après son déchargement (temps d'utilisation).
Cette boucle d'attente ne sied donc pas à une ouverture de site, car généralement, le programme (navigateur) reste actif en tâche de fond!
Cette boucle est à utiliser pour des programmes ou des scripts complémentaires à ta programmation... par exemple l'effacement de fichiers, zipper ou convertir des documents en commande en 'batch'... pas pour des applications sans retour au prompt (invalidation du hook d'utilisation) qui ne te rendront pas la main après le chargement de l'application.
Ce genre de tâche (navigateurs, programmes résidents etc...) posent un "handel" (pointeur d'utilisation) qui est testé par ton programme, et si ce programme est toujours actif, la boucle d'attente bloquera l'utilisation de ton programme jusqu’à la fermeture définitive du programme appelé.
Il faut donc ouvrir le navigateur, et le laisser se charger en tâche de fond avec ou sans focus.
Le problème étant la prise en main du focus de l'application appelée, car en effet, le navigateur peut très bien avoir silencieusement chargé la page, sans que l'utilisateur en soit informé!
Mais, généralement, le focus est redirigé vers l'application à ouvrir... sauf si celle-ci est déjà active!
Donc, impossible pour toi de savoir si l'utilisateur à bien chargé le site que tu as appelé.
Vire cette boucle, c'est une source de problèmes pour l'utilisateur, car il sera dans l'impossibilité de fermer ton programme si chrome reste actif... et il n'est pas rare qu'un utilisateur ne ferme jamais son navigateur!
La fermeture de Windows fermera l'ensemble des tâches actives... et débloquera ton programme, mais c'est pas trop cool d'avoir à rebooter le système pour fermer un programme! (même si cette boucle peut-être arrêtée à l'arrache par un Ctrl/alt/esc!)