[delphi] Evenement NavigateComplete2 de IE via OLE :??: Zion help plz

Evenement NavigateComplete2 de IE via OLE :??: Zion help plz [delphi] - Delphi/Pascal - Programmation

Marsh Posté le 23-02-2003 à 06:31:48    

J'ai declare une variable OLE qui contient mon IE.
 
Style : IE : variant;
 
Maintenant je dois faire ouvrir une page a IE, et des qu'il a fini de la charger, lui faire ouvrir une seconde page...
 
Pour cela, je dois utiliser les evenements NavigateComplete ou NavigateComplete2 si je m'en refere a cela :  
 
http://msdn.microsoft.com/library/ [...] rowser.asp
 
Mais je sais pas comment les utiliser :cry:
 
Quelqu'un peux me filer un exemple ?
 
Merci, je galere trop la :'(
 
 
Previous question :

Citation :


bonjour,
 
Je dois faire une appli qui fait un bete TBrowserControl, ouvre une bete page php via ce TBrowserControl, tout en envoyant quelques donnees comme si un formulaire avait ete envoye.
 
J'ai truve un tuto sur le net :
 
http://bdn.borland.com/article/0,1410,26531,00.html
 
magnifique, super, pile poil ce qu'il me faut.
 
Alors ben j'ai voulu tester le truc.
 
J'ai fait de gros copiers/coller.
 
Exactement pareil, a la ligne pres. Le script asp identique, le code de la fonction sur le bouton identique, les memes noms de champ, tout pareil.  
 
Et je lance, ca compile du premier coup ( logique ).
 
Et je vois le resultat... riuen s'affiche, comme si rien n'avait ete envoye :heink:
 
Alors je me dis " c'est mon apache qui doit deconner". Je tente sur ifrance... pareil. L'apache de ma fac... spareil. ALors soit je suis debile neuneu a un point ultime ( je le sais deja) soit une couille dans le potage...
 
Vous pouvez m'aider ? :'(
 


Message édité par Tetedeiench le 23-02-2003 à 22:10:54
Reply

Marsh Posté le 23-02-2003 à 06:31:48   

Reply

Marsh Posté le 23-02-2003 à 06:33:13    

Ou alors si vous avez la soluce avec Internet Explorer via OLE ( qui me fait la meme chose) je suis preneur itoo :o

Reply

Marsh Posté le 23-02-2003 à 14:41:14    

tetedeiench a écrit :

Ou alors si vous avez la soluce avec Internet Explorer via OLE ( qui me fait la meme chose) je suis preneur itoo :o


 
 :bounce:  
 
+1
 
je suis intéressé aussi !
 
J'aimerais pouvoir envoyer des fichiers et des paramètres comme avec un formulaire classique sur un serveur mais via mon app delphi!
 
:hello:
 


---------------
www.astrocosmos.net, le portail belge francophone sur l'astronomie et les Sciences.
Reply

Marsh Posté le 23-02-2003 à 19:28:21    

AZorbas a écrit :


 
 :bounce:  
 
+1
 
je suis intéressé aussi !
 
J'aimerais pouvoir envoyer des fichiers et des paramètres comme avec un formulaire classique sur un serveur mais via mon app delphi!
 
:hello:
 
 


 
Donc up ;)
 
Azorbas, tu dois pouvoir en utilisant un TwebBrowser et en montrant la page...
 
Le probleme c'est que moi je veux que cet envoi de donnees soit automatique ( pas de formulaire) et surtout transparent a l'utilisateur...
 
Merci :)

Reply

Marsh Posté le 23-02-2003 à 19:58:23    

Si tu n'as besoin d'afficher le que le résultat (la page retournée) et qu'il n'y a plus rien après (liens, images, autre formulaire, ...) y a une solution simple :
Tu fais un Post avec le TIdHTTP (HTTP Client, dans la palette Indy Client), ça te renvoie une page sous forme de chaîne, puis tu charges la page dans le TWebBrowser (y a moyen d'ouvrir une page en donnant son contenu plutôt que son URL)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 23-02-2003 à 20:07:26    

antp a écrit :

Si tu n'as besoin d'afficher le que le résultat (la page retournée) et qu'il n'y a plus rien après (liens, images, autre formulaire, ...) y a une solution simple :
Tu fais un Post avec le TIdHTTP (HTTP Client, dans la palette Indy Client), ça te renvoie une page sous forme de chaîne, puis tu charges la page dans le TWebBrowser (y a moyen d'ouvrir une page en donnant son contenu plutôt que son URL)


 
j'y ai pense, mais malheureusement, apres, y a des trucs a faire :/ :cry:

Reply

Marsh Posté le 23-02-2003 à 20:11:12    

Remarque, je pourrai toujours m'en sortir en envoyant les infos via le login et le pass de l'utilisateur, et en ouvrant ensuite IE avec le login et le pass et en recuperant les infos de la BDD... mais c'est une maniere detournee peu elegante tu en conviendras :/

Reply

Marsh Posté le 23-02-2003 à 20:32:28    

J'ai essaye en faisant ca :
 

Code :
  1. procedure TForm1.BitBtn3Click(Sender: TObject);
  2. const
  3.   csOLEObjName = 'InternetExplorer.Application';
  4.   CRLF = #13#10;
  5. var
  6. IE        : Variant;
  7.   PostData: OleVariant;
  8.   Headers: OleVariant;
  9.   i: Integer;
  10. begin
  11. Headers := 'Content-Type: multipart/form-data; boundary=-----------------------------7cf87224d2020a';
  12. PostData :='-----------------------------7cf87224d2020a' + CRLF + 'Content-Disposition: form-data; name="meswel"' + CRLF + CRLF + 'hello2' + CRLF + '-----------------------------7cf87224d2020a--';
  13.     IE := CreateOleObject( csOLEObjName );
  14.     IE.Visible := true;
  15.     IE.Navigate('http://www.ocbase.com/essai2.php', EmptyParam, EmptyParam, PostData, Headers);


 
Ben DMC encore une fois :cry:

Reply

Marsh Posté le 23-02-2003 à 20:36:18    

tu peux utiliser ATL en delphi ? si oui, http://forum.hardware.fr/forum2.php3?post=25434&cat=10

Reply

Marsh Posté le 23-02-2003 à 20:37:50    

OH PUTAIN j'ai trouve l'erreur !
 
C'est a cause de ovh ! Il me cree une frame ! Il faut que je foute le lien directement :cry:
 
Spavrai ca :cry:
 
Y a moyen de dire a IE de charger la page puis d'envoyer les infos a une frame precise :??:

Reply

Marsh Posté le 23-02-2003 à 20:37:50   

Reply

Marsh Posté le 23-02-2003 à 20:41:21    

tetedeiench a écrit :


C'est a cause de ovh ! Il me cree une frame ! Il faut que je foute le lien directement :cry:
 


 
si c'est une redirection vers un autre serveur et que tu lui dis de garder l'adresse du domaine visible, il a pas vraiment d'autre choix que de créer une frame [:spamafote]
c'est comme les .fr.st etc.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 23-02-2003 à 20:42:10    

C'est mon .com :/
 
J'en ai absolument besoin moi :cry:
 
je fais comment :??: :cry:

Reply

Marsh Posté le 23-02-2003 à 20:57:00    

Marrant avec mon no-ip ca marche :heink:
 
Va falloir que j'envoie IE sur le no-ip, et que je le redirige direct sur le .com juste apres en forwardant les variables...
 
Quel bordel et quel merdier fini.
 
c'aurait ete si simple sans ce putain de truc a la ovh :cry:
 
Ou alors, soluce 2, j'ouvre le .com, et des que c'est fini, j'ouvre la page dans la frame cree par ovh, avec la bonne page...
 
c'est une bonne solution... et ca marche.
 
antp, tu connais l'evenement de IE pour dire "page finie de charger ?:"
 
Et comment l'implementer sans avoir d'objet sur la form "Ole", juste une variable globale...
 
Merci...


Message édité par Tetedeiench le 23-02-2003 à 20:59:09
Reply

Marsh Posté le 23-02-2003 à 20:58:56    

Sur OVH tu peux pas faire un forward sans frame ?
Genre VHOST ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 23-02-2003 à 20:59:39    

antp a écrit :

Sur OVH tu peux pas faire un forward sans frame ?
Genre VHOST ?


 
Si j'ai un VHOST...
 
C'est ce qu'il faut que j'utilise ? je teste.

Reply

Marsh Posté le 23-02-2003 à 21:01:09    

antp a écrit :

Sur OVH tu peux pas faire un forward sans frame ?
Genre VHOST ?


 
le champ VHOST est possible uniquement sur  
 
 
240plan/pack, 720plan/pack, mediaplan/pack et xxlplan/pack
 
Mouarf.
 
Nan, il me faut une redirection invisible avec frame...
 
Comment je dis a mon prog "Attends que la page soie chargee avant d'aller sur le prochain ?"

Reply

Marsh Posté le 23-02-2003 à 21:01:11    

Je sais pas s'il y a moyen de transmettre les données du POST...


Message édité par antp le 23-02-2003 à 21:01:42

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 23-02-2003 à 21:03:49    

antp a écrit :

Je sais pas s'il y a moyen de transmettre les données du POST...


 
Si, via un truc grace a indyclient, je sais que la rfame ou se trouve mon site s'apelle "ORT"
 
Une fois la page chargee, je peux dire a IE d'ouvrir la page que je veux dans la frame "ORT" via une seconde ligne de code "navigate".
 
Et ca amrche, je viens de tester sur deux boutons separes.
 
Je sais que IE a un evenement "NavigateComplete", ce qui me permettrai d'enchainer les deux...
 
mais je sais pas l'utiliser :/

Reply

Marsh Posté le 23-02-2003 à 21:04:36    

http://msdn.microsoft.com/library/ [...] rowser.asp
 
Je veux juste dire a mon prog delphi : "Quand evenement NavigateComplete fait ca".
 
:??:
 
Sans avoir d'objet dans le GUI :/

Reply

Marsh Posté le 23-02-2003 à 22:11:15    

prout :/

Reply

Marsh Posté le 23-02-2003 à 22:24:49    

heu si ça s'appelle NavigateComplete2, pourquoi par ICQ tu me parlais de NavigateComplete ?
Tu as essayé IE.NavigateComplete2 := .... ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 23-02-2003 à 22:36:23    

Y a les deux qui existent :D
 
et ca rends exactement la meme erreur :/

Reply

Marsh Posté le 23-02-2003 à 22:38:35    

   IE.NavigateComplete2 := TForm1.OnNavigateComplete;
 
=> Not enough actual parameters.
 
Et voila mon OnNavigatecomplete :
 
procedure TForm1.OnNavigateComplete(Sender : Tobject; pDisp : variant; URL : Variant);
 
:'(
 

Reply

Marsh Posté le 23-02-2003 à 22:39:59    

hey j'y pense, skoi le type d'un evenement ?
 
Du moins ici, du pointer vers cet evenement ?
 


Message édité par Tetedeiench le 23-02-2003 à 22:41:44
Reply

Marsh Posté le 23-02-2003 à 23:54:29    

heu t'es sûr qu'il faut le param "sender" ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-02-2003 à 00:02:01    

antp a écrit :

heu t'es sûr qu'il faut le param "sender" ?  


 
non, mais sans ou avec c'est pareil, alors...

Reply

Marsh Posté le 24-02-2003 à 15:32:26    


Le NavigateComplete2 c'est celui que tu es censé utiliser, ils ont pas le choix de laisser les autres déclarations donc si ils veulent en modifier une ils en rajoutent une, et donc utilise celle la.
 
Par contre la t'es pas clair:
 
 

Citation :

j'y ai pense, mais malheureusement, apres, y a des trucs a faire :/ :cry:

 
 
Tu veux faire quoi exactement?
 
Sinon y a une solution à 2 euros, tu fous un TWebBrowser sur ton form, tu le fous en non visible et ca ira  :D


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 24-02-2003 à 18:28:54    

zion a écrit :


Le NavigateComplete2 c'est celui que tu es censé utiliser, ils ont pas le choix de laisser les autres déclarations donc si ils veulent en modifier une ils en rajoutent une, et donc utilise celle la.
 
Par contre la t'es pas clair:
 
 

Citation :

j'y ai pense, mais malheureusement, apres, y a des trucs a faire :/ :cry:

 
 
Tu veux faire quoi exactement?
 
Sinon y a une solution à 2 euros, tu fous un TWebBrowser sur ton form, tu le fous en non visible et ca ira  :D  


 
En fait, j'ai besoin de lancer un IE, d'envoyer des infos en meme temps que le lancement, et ensuite, l'utilisateur continue de remplir un formulaire classique...
 
Et comme ovh me fait chier ( sic ), il faut que j'ouvre une premiere page entierement, avant de pouvoir charger la seconde e envoyant les infos, ce qui affichera le formulaire...
 
En gros, je dois faire :
 
-Lancer IE
-Aller page de garde
-Une fois page de garde chargee, aller sur page de formulaire en envoyant des donnees
-remplir formulaire blabla... controle a l'utilisateur now.
 
Mon probleme se situe ici : Une fois page de garde chargee
 
Comment on peux savoir si elle est finie ? Je voudrais utiliser l'evenement NavigateComplete2 ... mais comment le capter dans mon appli delphi ?
 
 

Reply

Marsh Posté le 24-02-2003 à 19:33:23    


j'en sais rien  :whistle:  
 
enfin quoique, tu peux utiliser le DDE, ca marche pas trop mal encore:
 
http://www.graphcomp.com/info/specs/nets/ddeapi.html
 
ce sont les mêmes pour IE (sauf 2-3 qui existent pas, y a un doc chez MS, faut le retrouver).


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 24-02-2003 à 20:23:37    

ok, mais bon, je viens de trouver que tant que IE travaille, la variable IE.busy est a 1  :whistle:  
 
Bon ok spa tres propre mais spratique :D

Reply

Marsh Posté le 24-02-2003 à 20:28:43    

je ne suis pas sur d'avoir saisi tu veux te brancher sur l'évenement OnNavigateComplete2 de to WebBrowser ?
 
ben tu déclares une procedure du style
 
procedure WebNavigateComplete2(Sender: TObject;pDisp: IDispatch; var URL: OleVariant);
 
 
et tu branches ton navigateur
 
MonBrowser.OnNavigateComplete2 := WebNavigateComplete2;
 
mais il doit y avoir un truc que je n'ai pas compris car ça me semble simple  :ange:  :D  
 
 

Reply

Marsh Posté le 24-02-2003 à 20:38:32    

ah ok tu as aussi une frame donc il faut vérifier que tout est bien charger...je te conseille d'aller faire un tour tu y trouveras des réponses pour savoir comment déterminer qu'une page à bien fini de se charger

Reply

Marsh Posté le 24-02-2003 à 20:43:34    


En effet j'ai déjà du aller demander des trucs la  :o  
 
Mais euh, ils m'ont jamais répondu  :fou:


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 24-02-2003 à 20:47:41    

Taureau a écrit :

je ne suis pas sur d'avoir saisi tu veux te brancher sur l'évenement OnNavigateComplete2 de to WebBrowser ?
 
ben tu déclares une procedure du style
 
procedure WebNavigateComplete2(Sender: TObject;pDisp: IDispatch; var URL: OleVariant);
 
 
et tu branches ton navigateur
 
MonBrowser.OnNavigateComplete2 := WebNavigateComplete2;
 
mais il doit y avoir un truc que je n'ai pas compris car ça me semble simple  :ange:  :D  
 
 
 


 
On a essaye, et ca a rendu une erreur.
 
Et oui j'ai un putain de frame, donc il faut que je charge la page une fois, comme ca la page contient mon site dans la frame de redirection ovh, ensuite je dis a IE d'envoyer les donnees sur la nouvelle page a ouvrir dans la frame ovh... quel merdier entre nous :/
 
Mais IE.busy marche bien a priori ( meme si c'est pas documente sur le site de microsoft :lol: :D )

Reply

Marsh Posté le 24-02-2003 à 20:47:49    

:D  
 
mais bon il me semble avoir lu plusieurs trucs sur comment détecter qu'une page à bien fini de tout télécharger...mais j'ai la flemme de refaire les recherches  :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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