Encore un! Mais il est très simple et efficace. Il fonctionne même en réseau ou derrière un proxy. Il donne l'IP Internet, pas l'IP local qui, elle, est beaucoup plus simple à obtenir.
Le principe:
Le programme se connecte à un site qui renvoie votre adresse IP. Ceci à l'aide d'un composant "WebBrowser". La page renvoyée est transformée en chaîne, puis on y cherche l'adresse IP.
Pour plus de sécurité et en cas d'échec de la 1ère connexion, le programme se connecte à un autre site semblable...
Source / Exemple :
unit Unit1;
{IP Internet par Caribensila}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, OleCtrls, SHDocVw, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
WebBrowser1: TWebBrowser;
procedure Button1Click(Sender: TObject);
procedure WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
Tentative : Byte;
procedure Connexion;
begin
if (Tentative = 1) then { 1ère tentative}
Form1.WebBrowser1.Navigate('http://checkip.dyndns.org');
if (Tentative = 2) then { 2ème tentative}
Form1.WebBrowser1.Navigate('http://www.adresseip.com');
end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
S, IP : String;
i :Integer;
begin
beep;
// La page téléchargée est réduite en chaîne.
S := WebBrowser1.OleObject.Document.Body.InnerHTML;
If (Tentative = 2) then
begin
// L'adresse IP est extraite de cette chaîne.
if (Pos('Votre adresse IP est',S) <> 0) then
begin
i := Pos('Votre adresse IP est',S)+67;
While (S[i] <> ' ') do
begin
IP := IP + S[i];
inc(i);
end;
Edit1.Text := IP;
Button1.Enabled := true;
WebBrowser1.Stop;
end
else
begin
Edit1.Text := 'Echec! Vérifier connexion.';
Button1.Enabled := true;
end;
end;
If (Tentative = 1) then
begin
if (Pos('Current IP Address: ',S) <> 0) then
begin
i := 21;
While (S[i] <> ' ') do
begin
IP := IP + S[i];
inc(i);
end;
Edit1.Text := IP;
Button1.Enabled := true;
WebBrowser1.Stop;
end
else
begin
Tentative := 2;
Connexion;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Tentative := 1; { Initialiser le drapeau Tentative.}
Edit1.Text := 'Patientez !';
Button1.Enabled := false;
Connexion;
end;
end.
Conclusion :
Fait sur Delphi 7. Commentaires bienvenus...
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.