Problème OLEVariant (internet)
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 sur développez et j'ai réussi à trouver ce code pour pouvoir ouvrir internet explorer, allez sur le site en question et me connecter.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
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 :
Code:
1 2 3 4 5 6 7
|
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