Affiche l'adresse ip du pc

Soyez le premier à donner votre avis sur cette source.

Vue 9 388 fois - Téléchargée 1 278 fois

Description

Ce petit programme affiche l'adresse IP de votre machine dans la barre des tâches à coté de la pendule windows.
L'affichage est dynamique, toutes les secondes l'adresse est contrôlée : cela est utile pour ceux qui bossent avec un PC qui change sans arrêt d'adresse IP (genre multinetwork manager).
Il est nécessaire, pour fonctionner, d'installer "CoolTrayIcon" qui correspond à des ressources supplémentaires freeware qui s'ajoutent à delphi on le trouve à l'adresse : http://swiss.torry.net/trayicons.htm

Source / Exemple :


unit TtMain;

interface

uses
  Windows, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls,
  ExtCtrls, ComCtrls, Menus, Graphics, CoolTrayIcon, TextTrayIcon, WinSock,
  Messages, IniFiles;

const wm_AppelMessage=wm_user+1;

type
  TMainForm = class(TForm)
    Button7: TButton;
    TextTrayIcon1: TTextTrayIcon;
    TextTrayIcon2: TTextTrayIcon;
    TextTrayIcon3: TTextTrayIcon;
    TextTrayIcon4: TTextTrayIcon;
    Timer1: TTimer;
    PopupMenu1: TPopupMenu;
    exit1: TMenuItem;
    sens1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure TextTrayIcon1MouseUp(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure cachemoi(Sender: TObject);
    procedure fini (Sender: TObject);
    procedure sens1Click(Sender: TObject);
    
  private
    TrayCounter: Integer;
    LoopNumbers: Boolean;
    BgIcon1,BgIcon2,BgIcon3,BgIcon4: TIcon;
//    procedure WMAppelMessage(var msg : TMessage); message wm_AppelMessage;
  end;

var
  MainForm: TMainForm;
  fichierini, sens : shortstring;

implementation

{$R *.DFM}

procedure TMainForm.FormCreate(Sender: TObject);
Var
Ini: TIniFile;
begin
sens := 'true';
fichierini := 'c:\Myip.ini';
Ini := TIniFile.Create( fichierini );
sens := ini.ReadString('sens','sens','true');
Ini.Free;

  BgIcon4 := TIcon.Create;
  TextTrayIcon4.BackgroundIcon := nil;

  BgIcon3 := TIcon.Create;
  TextTrayIcon3.BackgroundIcon := nil;

  BgIcon2 := TIcon.Create;
  TextTrayIcon2.BackgroundIcon := nil;

  BgIcon1 := TIcon.Create;
  TextTrayIcon1.BackgroundIcon := nil;

end;

procedure TMainForm.Button7Click(Sender: TObject);
begin
  Close;
end;

procedure TMainForm.TextTrayIcon1MouseUp(Sender: TObject);
begin
PopupMenu1.Destroy;
end;

procedure TMainForm.Timer1Timer(Sender: TObject);
var
  wVersionRequested : WORD;
  wsaData : TWSAData;
  s : array[0..128] of char;
  p : PHostEnt;
  p2 : pchar;
  OutPut :array[0..100] of char;
  IP : array[0..3] of shortstring;
  cc,adresseIP : shortstring;
  i,IPnum : integer;

begin
 {Démarrer WinSock}
     wVersionRequested := MAKEWORD(1, 1);
     WSAStartup(wVersionRequested, wsaData);
{Récupérer l'adresse Ip}
     GetHostName(@s, 128);
     p := GetHostByName(@s);
     p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
     StrPCopy(OutPut,Format('%s',[p2]));
     WSACleanup;

    IP[3]:='';
    IP[2]:='';
    IP[1]:='';
    IP[0]:='';

     IPnum:=0;
     for i:=1 to 15 do
     begin
     cc := copy(output,i,1);
     if cc<>'.' then
         IP[IPnum]:=IP[IPnum]+cc
       else
         IPnum:=IPnum+1;
     end;

     if sens='true' then
     begin
       TextTrayIcon1.Text := IP[3];
       TextTrayIcon2.Text := IP[2];
       TextTrayIcon3.Text := IP[1];
       TextTrayIcon4.Text := IP[0];
     end
     else
     begin
       TextTrayIcon1.Text := IP[0];
       TextTrayIcon2.Text := IP[1];
       TextTrayIcon3.Text := IP[2];
       TextTrayIcon4.Text := IP[3];
     end;
end;

procedure TMainForm.cachemoi(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_Hide);  // ceci enlève l'affichage de la tache
end;

procedure TMainForm.fini (Sender: TObject);
begin
  BgIcon1.Free;
  BgIcon2.Free;
  BgIcon3.Free;
  BgIcon4.Free;

  close;
end;
procedure TMainForm.sens1Click(Sender: TObject);
Var
Ini: TIniFile;
begin
if sens= 'true' then
  begin
   sens:= 'false';
   sens1.Caption := '<- sens';
  end
  else
  begin
    sens:= 'true';
    sens1.Caption := '-> sens';
  end;

Ini := TIniFile.Create( fichierini );
ini.WriteString('sens','sens',sens);
Ini.Free;

end;

end.

--------------------------------
Dans le menu projet / voir le source :

program TextTrayTest;

uses
  Forms,
  WinProcs,
  TtMain in 'TtMain.pas' {MainForm};

{$R *.RES}

begin
  Application.Initialize;
  Application.Title := 'MyIP';
   Application.HelpFile := '';
  Application.ShowMainForm:=False;
  Application.CreateForm(TMainForm, MainForm);
  Application.Run;
end.

Conclusion :


Réalisé en delphi 7.
Merci à Troels Jakobsen pour "CoolTrayIcon".
Sur windows XP l'adresse IP s'affiche dans le bon sens. Mais sous windows 2000 elle s'affiche dans l'autre sens : cette version en tient compte et on peut changer le sens d'affichage.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_grandvizir
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
10 -
http://www.cnil.fr/

C'est assez intéressant ce qui est montré. Ca globalise tout et c'est sympa...
ni69
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
9 -
ok merci j'essayerai...
@+
Nico
JulioDelphi
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13 -
aucun code n'existe, ou plutot des milliers de codes existent mais aucun ne fonctionne.
La meilleure solution est de recuperer son adresse IP via une page web (comme la source de Caribensila). c de ma bidouille mais au moins ça marche !
ni69
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
9 -
Slt ton code m'intéresse bien, mais est-ce que quelqu'un sait comment trouver l'adresse IP d'un PC quand on a un routeur (en effet, toutes les fonctions que je connais renvoient l'IP du routeur qui est tout le temps la même...)

@+
Nico
JulioDelphi
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13 -
hello,

j'ai pas encore bien epluché le code, mais c assez interessant et surtout tres original comme idée !
Il y a un compo indy ki look l'adresse IP (celle du net ou local je c plus g pas sous les yeux). le compo garde un historik des ip, comme ça tu as pas besoin de refresh l'ip toutes les mn, refresh only qd ça change :)

voila ++ bon travail

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.