Lancer IE mais impossible de gerer la fin du chargement de la page !

Lancer IE mais impossible de gerer la fin du chargement de la page ! - VB/VBA/VBS - Programmation

Marsh Posté le 11-12-2002 à 22:24:41    

Voila je cherche a faire un programme qui lance une fenêtre IE, qui attend le chargement de celle ci puis qui fait des SendKeys.send dessus
 
Le probleme c que la lancé c pas trop dur y'a Shell()
Mais apres impossible de lui faire attendre le chargement , a la rigeur meme mettre un sorte de timer qui attend genre 20sec pour etre sur que la page (sleep(20000) ) est bien chargé, mais ca fait planté le prog
 
personne a une idée ?
Thx

Reply

Marsh Posté le 11-12-2002 à 22:24:41   

Reply

Marsh Posté le 11-12-2002 à 23:25:12    

casquetta a écrit :

Voila je cherche a faire un programme qui lance une fenêtre IE, qui attend le chargement de celle ci puis qui fait des SendKeys.send dessus
 
Le probleme c que la lancé c pas trop dur y'a Shell()
Mais apres impossible de lui faire attendre le chargement , a la rigeur meme mettre un sorte de timer qui attend genre 20sec pour etre sur que la page (sleep(20000) ) est bien chargé, mais ca fait planté le prog
 
personne a une idée ?
Thx


 
UP !! plz

Reply

Marsh Posté le 12-12-2002 à 14:08:06    

Fait pas comme ça.
 
Crée un prog avec une form assez grande.
Dedans, crée un objet IE (vivi, tu peux intégrer IE à un programme)
 
Ensuite, tu mets :
 
ie.url = 'http://www.yahoo.com'
do while ie.readystate <> 0
   doevents
loop
 
Puis pour les snedkeys, ben je crois que tu peux pas en faire, mais tu peux éxécuter des fonctions javascript depuis le vb, hors si mes souvenirs sont bons, y'a une fonction js qui permet d'envoyer des caractères dans le document pour simuler une personne qui tape ou qui bouge la souris.
 
Et l'avantage de ce système de IE intégré, c'est que tu peux donc interagir de façon très poussée avec le programme, et surtout, tu peux tout reskinner comme tu veux (par défaut, seul la zone d'affichage est visible, ce qui fait que tu peux tout changer, barre d'url, menus, raccourcis, etc.)

Reply

Marsh Posté le 12-12-2002 à 14:10:01    

MagicBuzz a écrit :


Et l'avantage de ce système de IE intégré, c'est que tu peux donc interagir de façon très poussée avec le programme, et surtout, tu peux tout reskinner comme tu veux


si tu me trouves comment piloter completement l'impression (mise en page & cie), je te paye une biere.

Reply

Marsh Posté le 12-12-2002 à 14:35:13    

Bah ça reste IE.
 
Ce que je veux dire par le fait que c'est très poussé, c'est que je programme a accès à toutes les fonctions/activeX/applets java qu'il y a dans la page, aux cookies etc, ce qui fait qu'on peut faire des applis très poussées d'automatisation de saisie, d'audit, ou de tests automatiques de site par exemple.

Reply

Marsh Posté le 12-12-2002 à 15:46:32    

MagicBuzz a écrit :

Fait pas comme ça.
 
Crée un prog avec une form assez grande.
Dedans, crée un objet IE (vivi, tu peux intégrer IE à un programme)
 
Ensuite, tu mets :
 
ie.url = 'http://www.yahoo.com'
do while ie.readystate <> 0
   doevents
loop
 
Puis pour les snedkeys, ben je crois que tu peux pas en faire, mais tu peux éxécuter des fonctions javascript depuis le vb, hors si mes souvenirs sont bons, y'a une fonction js qui permet d'envoyer des caractères dans le document pour simuler une personne qui tape ou qui bouge la souris.
 
Et l'avantage de ce système de IE intégré, c'est que tu peux donc interagir de façon très poussée avec le programme, et surtout, tu peux tout reskinner comme tu veux (par défaut, seul la zone d'affichage est visible, ce qui fait que tu peux tout changer, barre d'url, menus, raccourcis, etc.)


 
Ok merci bien je vais essayé
 
et ta une idée pour la fonction Javascript qui permet d'envoyer des evenement clavier a ce fameux ie ?
 
Merci bien

Reply

Marsh Posté le 12-12-2002 à 15:51:46    

En fait, après test, t'as juste à faire un sendkey sur l'objet IE, c'est encore plus simple :D
 
J'ai pas essayé, mais il doit y avoir moyen de faire un sendkey différent pour chaque objet de la page en passant en paramètre l'objet lui-même.

Reply

Marsh Posté le 12-12-2002 à 15:55:15    

MagicBuzz a écrit :

En fait, après test, t'as juste à faire un sendkey sur l'objet IE, c'est encore plus simple :D
 
J'ai pas essayé, mais il doit y avoir moyen de faire un sendkey différent pour chaque objet de la page en passant en paramètre l'objet lui-même.


 
- Euh... le probleme et que je trouve pas lobjet IE dans ma barre dobjet Visual Studio ?
 
can you help me ?
 
- Autre blem, le DoEvents() n'est pas reconnu ? faut le declarer ?


Message édité par casquetta le 12-12-2002 à 15:58:07
Reply

Marsh Posté le 12-12-2002 à 15:57:43    

Click droit > Ajouter un composant
 
Là dans le premier onglet, tu cherches "Microsoft Internet Controls"
 
L'icône est une petite planète terre.
 
Ensuite tu clique dessus, puis du dessine un rectangle dans ta form :)
 
PS: Attends, je te donne aussi la syntaxe pour l'appeler sans avoir besoin de form (dans une macro Excel par exemple)

Reply

Marsh Posté le 12-12-2002 à 16:01:09    

Voilà, pour créer la version "muette" du truc :
 

Code :
  1. Set inet = CreateObject("InternetExplorer.Application" )


 
Par contre, du coup, je sais pas s'il va aimer que tu lui envoie des caractères avec sendkey... A tester...
 
Sinon, petit exemple pour aller sur une URL, attendre le chargement de la page, et lires les données contenues dans un DIV :
 

Code :
  1. inet.Navigate ("http://xxx.xxx.xxx.xxx/logistics/stocks/otr_span.asp" )
  2.     Do While Not inet.ReadyState = READYSTATE_COMPLETE
  3.         DoEvents
  4.     Loop
  5.     strOTR_span = inet.Document.all.otr_span.innerHTML


 
PS: Je sais plus quelle est la valeur de la constante "READYSTATE_COMPLETE" :D

Reply

Marsh Posté le 12-12-2002 à 16:01:09   

Reply

Marsh Posté le 12-12-2002 à 16:02:26    

casquetta a écrit :


 
- Euh... le probleme et que je trouve pas lobjet IE dans ma barre dobjet Visual Studio ?
 
can you help me ?
 
- Autre blem, le DoEvents() n'est pas reconnu ? faut le declarer ?


DoEvents pas reconnu :??:
 
PS: Pas de parenthèses.
 
Sinon, c koi que tu fais exactement ? Un prog VBS ? Une page ASP ? Un prog VB ? Une macro Office ?

Reply

Marsh Posté le 12-12-2002 à 16:03:58    

MagicBuzz a écrit :

Voilà, pour créer la version "muette" du truc :
 

Code :
  1. Set inet = CreateObject("InternetExplorer.Application" )


 
Par contre, du coup, je sais pas s'il va aimer que tu lui envoie des caractères avec sendkey... A tester...
 
Sinon, petit exemple pour aller sur une URL, attendre le chargement de la page, et lires les données contenues dans un DIV :
 

Code :
  1. Ok merci tu commences a bien me plaire lol
  2. le probleme est que j'utilise Visual Studio .Net mais je pense pas que ca pose probleme cependant doevents n'est pas reconnu par exemple
  3. et je trouve toujours pas ton composant est ce que ca c bon :
  4. Diem IE As Object
  5. IE = CreateObject("InternetExplorer.Application" )
  6. IE.Navigate("http://www.xxxxxx.com" )
  7. IE.Visible = True
  8.     inet.Navigate ("http://xxx.xxx.xxx.xxx/logistics/stocks/otr_span.asp" )
  9.     Do While Not inet.ReadyState = READYSTATE_COMPLETE
  10.         DoEvents
  11.     Loop
  12.     strOTR_span = inet.Document.all.otr_span.innerHTML


 
PS: Je sais plus quelle est la valeur de la constante "READYSTATE_COMPLETE" :D

Reply

Marsh Posté le 12-12-2002 à 16:04:58    

MagicBuzz a écrit :


DoEvents pas reconnu :??:
 
PS: Pas de parenthèses.
 
Sinon, c koi que tu fais exactement ? Un prog VBS ? Une page ASP ? Un prog VB ? Une macro Office ?


 
bah il ajoute tout seul les parentheses ce con
Bah jaimerais bien que ce soit un prog Visual Basic qui lance une page web et qui envoie des SendKeys dessus comme un utilisateur standart
 
maintenant je peut me passé de VB et faire autre chose si c mieux

Reply

Marsh Posté le 12-12-2002 à 16:07:06    

Après tests, DoEvents ne fonctionne en effet pas quand tu fais un script VBS, ni une page ASP.
 
Par contre, pour une macro Office ou un Programme VB, aucun problème, la fonction existe.

Reply

Marsh Posté le 12-12-2002 à 16:08:14    

C'est quoi ta version de VB :heink:
 
Normalement, y'a pas de problème, DoEvents est une fonction tout à fait standard de VB...

Reply

Marsh Posté le 12-12-2002 à 16:08:22    

MagicBuzz a écrit :

Après tests, DoEvents ne fonctionne en effet pas quand tu fais un script VBS, ni une page ASP.
 
Par contre, pour une macro Office ou un Programme VB, aucun problème, la fonction existe.


 
ca ca a l'air de marcher par contre
System.Windows.Forms.Application.DoEvents()  
 
Mais maintenant j'ai ca :
 

Code :
  1. IE = CreateObject("InternetExplorer.Application" )
  2.         IE.Navigate("http://www.skyrock.com/rencontres/" )
  3.         IE.Visible = True
  4.         Do While IE.readystate <> 0
  5.             System.Windows.Forms.Application.DoEvents()
  6.         Loop


 
Comment jenvoie un sendkey la dessus et comment lui donné le focus ?

Reply

Marsh Posté le 12-12-2002 à 16:11:08    

Euh... OK...
 
Donc c'est pas du VB, mais du VB.NET !
 
C pas tu tout la même chose, c'est une sorte de C++ avec les mots clés de VB...
 
Marchera pas :D
 
Passe au C#, et demande de l'aide à ce niveau, moi je peux pas t'aider sous ce langage, mais tu devrais trouver de l'aide sans problème ;)

Reply

Marsh Posté le 12-12-2002 à 16:13:19    

Ben c simple, déjà, affiche dans une boîte de dialogue le contenu de :
 
IE.document.body.innerHTML
 
Histoire de voir si la page est correctement chargée.
 
Ensuite, pour le coup du sendkey, chais pas comment c'est en VB.NET
 
A priori, un truc genre :
 
System.IO.xxxxxxx.SendKey([object], [ascii_code])


Message édité par MagicBuzz le 12-12-2002 à 16:14:14
Reply

Marsh Posté le 12-12-2002 à 16:14:02    

MagicBuzz a écrit :

Euh... OK...
 
Donc c'est pas du VB, mais du VB.NET !
 
C pas tu tout la même chose, c'est une sorte de C++ avec les mots clés de VB...
 
Marchera pas :D
 
Passe au C#, et demande de l'aide à ce niveau, moi je peux pas t'aider sous ce langage, mais tu devrais trouver de l'aide sans problème ;)


 
Nan mais meme sur Studio.Net tu peut faire du VB basique je crois et même du C++ Basique
 
La c bon j'ai le code qu'il faut
cepenant je sais pas comment envoyé le SendKeys a mon objet IE
 
(cf code du dessus)

Reply

Marsh Posté le 12-12-2002 à 16:16:53    

Ben là ton code, c'est pas du VB mais du VB.NET ;)
 
Sinon, pour le sendkey, aucune idée.
 
Peut-être dans les bibliothèques :
 
System.IO
Application.Forms
 
Logiquement, c'est une fonction qui prends en paramètres au moins deux paramètres :
-> L'objet qui doit recevoir le caractère
-> Le code ASCII du caractère à envoyer

Reply

Marsh Posté le 12-12-2002 à 16:18:26    

MagicBuzz a écrit :

Ben là ton code, c'est pas du VB mais du VB.NET ;)
 
Sinon, pour le sendkey, aucune idée.
 
Peut-être dans les bibliothèques :
 
System.IO
Application.Forms
 
Logiquement, c'est une fonction qui prends en paramètres au moins deux paramètres :
-> L'objet qui doit recevoir le caractère
-> Le code ASCII du caractère à envoyer


 
Merci l'ami jvais allé voir ca
 
jespere que je vais trouver thx :jap: :jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed