Problème OLEVariant (internet) [Résolu]

Messages postés
6
Date d'inscription
jeudi 27 septembre 2007
Dernière intervention
10 mars 2009
- - Dernière réponse : iznogood12
Messages postés
6
Date d'inscription
jeudi 27 septembre 2007
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 ;)
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
6
Date d'inscription
jeudi 27 septembre 2007
Dernière intervention
10 mars 2009
3
Merci
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;

Merci iznogood12 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de iznogood12
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
Bonsoir,


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

cantador
Commenter la réponse de cs_cantador
Messages postés
6
Date d'inscription
jeudi 27 septembre 2007
Dernière intervention
10 mars 2009
0
Merci
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.
Commenter la réponse de iznogood12
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
cherche sur le site tu trouveras des exemples de code permettant la récupération du code source d'une page internet

cantador
Commenter la réponse de cs_cantador
Messages postés
6
Date d'inscription
jeudi 27 septembre 2007
Dernière intervention
10 mars 2009
0
Merci
Ok je vais regarder et je te tiens au courant ;)

en tout cas merci de ton aide ;)
Commenter la réponse de iznogood12
Messages postés
6
Date d'inscription
jeudi 27 septembre 2007
Dernière intervention
10 mars 2009
0
Merci
Sinon est ce que je peux interagir avec internet explorer avec un TWebBrowser?
Commenter la réponse de iznogood12
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
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="" />
Commenter la réponse de Cirec
Messages postés
6
Date d'inscription
jeudi 27 septembre 2007
Dernière intervention
10 mars 2009
0
Merci
Merci de vos conseils je vais revoir mon code pour utiliser le composant TWebBrowser ;)
Commenter la réponse de iznogood12

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.