Problème OLEVariant (internet)

Résolu
iznogood12 Messages postés 6 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 10 mars 2009 - 7 mars 2009 à 14:59
iznogood12 Messages postés 6 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 10 mars 2009 - 10 mars 2009 à 15:20
Bonjour tout le monde et merci d'avance pour voter aide précieuse.


Comme précisé dans le titre j'ai un problème avec la classe OLEVariant, je vous explique.


Je souhaiterai faire une application qui permet de piloter internet
explorer pour pouvoir allez sur un site pour récupérer certaine
information afin de les afficher sur mon logiciel et pour pouvoir
envoyer un message, ... Ne sachant pas du tout comment interagir avec
internet explorer j'ai fait des recherche sur le net et j'ai réussi à
trouver ce code pour pouvoir ouvrir internet explorer, allez sur le
site en question et me connecter.


Function ConnexionLogin (Pseudo : String; MotPasse : String) : Boolean;

Var

    ovElements    :     OLEVariant;

        i            :    Integer;

        m            :     Integer;

Begin

Result := false;

try

    IE := CreateOleObject('InternetExplorer.Application');

    IE.Visible := true;

    IE.Navigate('http://destinyevilangels.xooit.com/login.php');


    while (Cardinal(IE.readyState) <> 4) do

        sleep(1000);


        // ** Remplir les champs de connexion

    m := 0;

    while m < IE.Document.forms.Length do

    begin

        ovElements := IE.Document.Forms.Item(m).Elements;

        for i := 0 to ovElements.Length - 1 do

                begin

            if (CompareText(ovElements.Item(i).TagName, 'INPUT') 0) and (ovElements.Item(i).Id 'username') then

                    ovElements.item(i).Value := Pseudo;

                        if (CompareText(ovElements.Item(i).TagName, 'INPUT') 0) and (ovElements.Item(i).Id 'password') then

                ovElements.item(i).Value := MotPasse;

                end;

            IE.Document.Forms.Item(0).submit;

            while Cardinal(IE.readyState) <> 4 do

                        sleep(1000);

                Inc (m);

    end;

    Result := true;

except

end;

End;


En sachant que IE est une variable globale déclaré comme ça :


IE   :   OLEVariant;


Ça marche nickel.


Mais une fois que je suis connecté j'aimerai récupérer le contenue de ma page internet donc je fais comme ça :


procedure RecupererContenu ();

var

    Str        :    String;

Begin

     Str := IE.OleObject.Document.Body.InnerHTML;

End;


Et la ça marche pas du tout, il me met cet erreur :


Exception EOleError 'Le variant ne référence pas un objet Automation'.


Je ne sais vraiment pas du tout comment faire pour éviter cet erreur. Pouvez vous m'éclaircir?


Merci à tous


PS : Si j'ai pas été assez clair n'hésitez pas et me demander plus de précision ;)


PS1 : Je programme avec Delphi 5

PS2 : J'espère que j'ai posé ma que'stion au bon endroit ;)

8 réponses

iznogood12 Messages postés 6 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 10 mars 2009
7 mars 2009 à 19:28
C'est bon j'ai trouvé. Au lieu de faire :

procedure RecupererContenu ();
var
    Str        :    String;
Begin
     Str := IE.OleObject.Document.Body.InnerHTML;
End;

il faut faire :

procedure RecupererContenu ();
var
    Str        :    String;
Begin
     Str := IE.Document.Body.InnerHTML;
End;
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
7 mars 2009 à 18:11
Bonsoir,


Le TWebBrowser n'existe pas en delphi 5 ?
(je ne sais plus...)

cantador
0
iznogood12 Messages postés 6 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 10 mars 2009
7 mars 2009 à 18:24
Si il existe mais je ne sais pas si je peux interagir avec internet explorer avec un TWebBrowser.

C'est pour ça que j'utilise un OLEVariant.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
7 mars 2009 à 18:41
cherche sur le site tu trouveras des exemples de code permettant la récupération du code source d'une page internet

cantador
0

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

Posez votre question
iznogood12 Messages postés 6 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 10 mars 2009
7 mars 2009 à 18:48
Ok je vais regarder et je te tiens au courant ;)

en tout cas merci de ton aide ;)
0
iznogood12 Messages postés 6 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 10 mars 2009
7 mars 2009 à 19:04
Sinon est ce que je peux interagir avec internet explorer avec un TWebBrowser?
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
8 mars 2009 à 11:42
bof quand même ...

en comparaison des deux méthodes il est préférable d'utiliser un TWebBrowser comme te l'a dit Cantador ...

et oui tu peux interagir avec IE grâce au TWebBrowser :
remplir des champs cocher des cases valider des formulaires etc. etc. et en prime l'évènement "OnDocumentComplete" .. tester l'état d'avancement de la page "If WebBrowser1.readyState = READYSTATE_COMPLETE Then" etc. etc.

 
@+
Cirec

<hr siz="" />
0
iznogood12 Messages postés 6 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 10 mars 2009
10 mars 2009 à 15:20
Merci de vos conseils je vais revoir mon code pour utiliser le composant TWebBrowser ;)
0
Rejoignez-nous