Affiche l'adresse ip du pc

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

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.