Afficher un site Internet avec Shell

cpapy - 21 mai 2017 à 12:16 - Dernière réponse : JeuDuTaquin 18 Messages postés mardi 4 juillet 2017Date d'inscription 2 août 2017 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

8 réponses

NHenry 14274 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 18 octobre 2018 Dernière intervention - 21 mai 2017 à 13:16
0
Merci
Normal, ça attend que Chrome se ferme.
Commenter la réponse de NHenry
0
Merci
Comment procéder pour réaliser ce que je souhaiterais faire

Par avance merci.
Commenter la réponse de cpapy
vb95 1684 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 18 octobre 2018 Dernière intervention - Modifié par vb95 le 21/05/2017 à 18:28
0
Merci
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. 
Commenter la réponse de vb95
0
Merci
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.
vb95 1684 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 18 octobre 2018 Dernière intervention - 22 mai 2017 à 12:36
Le problème est aussi que VB6 n'est plus d'actualité !
En VB Net cela doit se faire aisément je pense !
Commenter la réponse de cpapy
vb95 1684 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 18 octobre 2018 Dernière intervention - 22 mai 2017 à 15:04
Commenter la réponse de vb95
0
Merci
Bonjour,

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

Merci encore pour votre aide.
Commenter la réponse de cpapy
JeuDuTaquin 18 Messages postés mardi 4 juillet 2017Date d'inscription 2 août 2017 Dernière intervention - Modifié par JeuDuTaquin le 30/07/2017 à 02:05
0
Merci
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!)
Commenter la réponse de JeuDuTaquin

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.