Fórum Como faço p/pegar o ip da máquina q está rodando meu program #184180

25/09/2003

0

Pessoal, preciso pegar o ip da máquina que está executando o programa em Delphi, alguém sabe como fazer isto pelo Delphi?


[]´s


Nelson_gpjr

Nelson_gpjr

Responder

Posts

25/09/2003

Abreu

Oi colega,

Você pode instalar o componente abaixo, ou então incluir a procedure contida nele para adquirir o endereço IP da máquina corrente.

Um abraço.


unit MYIpAddress;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Winsock;

type
TMYIpAddress = class(TComponent)
private
FIPAddress:string;
{ Private declarations }
protected
{ Protected declarations }
public
Constructor Create(Aowner:TComponent);Override;
Destructor Destroy;override;
procedure GetIpAddress;
{ Public declarations }
published
property IPAddress : String read FIPAddress write FIPAddress;
{ Published declarations }
end;

procedure Register;

implementation


procedure Register;
begin
RegisterComponents(´Abreu´, [TMYIpAddress]);
end;

constructor TMyIpAddress.Create(AOwner:TComponent);
begin
inherited Create(Aowner);
GetIpAddress;
end;

destructor TMyIpAddress.Destroy;
begin
Inherited Destroy;
end;

procedure TMyIpAddress.GetIpAddress;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;
begin
WSAStartup($101, GInitData);
FIPAddress := ´´;
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
FIPAddress:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;

end.


Responder

Gostei + 0

25/09/2003

Edineidaniel

A fonte do projeto principal ficará algo como:

implementation

uses Winsock;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
wVersionRequested : WORD;
wsaData : TWSAData;
begin
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
WSACleanup;
end;

procedure TForm1.BtnIPClick(Sender: TObject);
var
p : PHostEnt;
s : array[0..128] of char;
p2 : pchar;
begin
GetHostName(@s, 128);
p := GetHostByName(@s);
Memo1.Lines.Add(p^.h_Name);
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
Memo1.Lines.Add(p2);
end;

end.


t+

Edinei


Responder

Gostei + 0

12/08/2010

Rogério

Oi colega,

Você pode instalar o componente abaixo, ou então incluir a procedure contida nele para adquirir o endereço IP da máquina corrente.

Um abraço.


unit MYIpAddress;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Winsock;

type
TMYIpAddress = class(TComponent)
private
FIPAddress:string;
{ Private declarations }
protected
{ Protected declarations }
public
Constructor Create(Aowner:TComponent);Override;
Destructor Destroy;override;
procedure GetIpAddress;
{ Public declarations }
published
property IPAddress : String read FIPAddress write FIPAddress;
{ Published declarations }
end;

procedure Register;

implementation


procedure Register;
begin
RegisterComponents(´Abreu´, [TMYIpAddress]);
end;

constructor TMyIpAddress.Create(AOwner:TComponent);
begin
inherited Create(Aowner);
GetIpAddress;
end;

destructor TMyIpAddress.Destroy;
begin
Inherited Destroy;
end;

procedure TMyIpAddress.GetIpAddress;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;
begin
WSAStartup($101, GInitData);
FIPAddress := ´´;
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
FIPAddress:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;

end.


  Colega, preciso além do ip, a mascara, o gateway e o dns. Acha que tem algo assim ?  
Responder

Gostei + 0

13/08/2010

Eriley Barbosa

procedure TForm1.Button1Click(Sender: TObject);
begin
  WinExec(PChar('command.com /c ipconfig /all >c:\texto.txt'),SW_shownormal);
end; Todas as configurações de rede serão jogadas num arquivo chamado texto.txt em c:. Basta agora que você pegue este arquivo e adicione seu conteúdo a um memo por exemplo.   Atenciosamente   Eriley
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar