Afficher un site Internet avec Shell

cpapy - 21 mai 2017 à 12:16
JeuDuTaquin Messages postés 249 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 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

Iappl = Shell("C:\Program Files\Google\Chrome\Application\Chrome.exe http://www.echange-immo.fr/fr/annonce/548/details", 1)
Iexec = OpenProcess(PROCESS_QUERY_INFORMATION, 0&, Iappl)

Do
J1 = GetExitCodeProcess(Iexec, RetCode)
DoEvents
Loop While RetCode <> STILL_ACTIVE

MsgBox "Page chargée"

End Sub



Dans l'exemple ci-dessous, la sortie de la boucle est immédiate
Loop While RetCode <> STILL_ACTIVE

Et dans l'exemple ci-dessous, on ne sort jamais de la boucle
Loop While RetCode = STILL_ACTIVE

Merci pour votre aide.

7 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
21 mai 2017 à 13:16
Normal, ça attend que Chrome se ferme.
0
Comment procéder pour réaliser ce que je souhaiterais faire

Par avance 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 21 mai 2017 à 18:28
bonjour
Une piste sans certitude (je n'ai pas VB 6 ) : https://www.generation-nt.com/reponses/chargement-page-web-entraide-2894091.html mais avec Internet Explorer

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
Bonjour,

Effectivement ça marche avec Internet Explorer. Comme Internet
n'est plus d'actualité, je cherche à utiliser une autre technique.

Merci pour votre aide.

Cordialement.
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 22 mai 2017 à 12:37
Le problème est aussi que VB6 n'est plus d'actualité !
En VB Net cela doit se faire aisément je pense !
0

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

Posez votre question
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
22 mai 2017 à 15:04
0
Bonjour,

Les solutions que vous m'avez données ne solutionnent pas mon problème.

Merci encore pour votre aide.
0
JeuDuTaquin Messages postés 249 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 7
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!)
0
Rejoignez-nous