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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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