Pegar ip das duas placas de rede.
A minha dúvida é a seguinte como eu faço para pegar o IP de uma máquina que tem duas placas de rede consequentemente ela está em duas redes... ou seja tem dois IPS, como eu faço para especificar o IP que eu quero pegar por exemplo quero o IP da placa1 ou então quero o IP da placa2.
Sem mais
Tiago Zaniquelli
:arrow: [color=red:e780d37258]Título alterado pelo Moderador oTTo. Removido: ´Pega IP´.[/color:e780d37258]
:idea: [color=blue:e780d37258]Seja mais claro no título.[/color:e780d37258]
:idea: [color=blue:e780d37258]Leia sempre regras de conduta.[/color:e780d37258]
Sem mais
Tiago Zaniquelli
:arrow: [color=red:e780d37258]Título alterado pelo Moderador oTTo. Removido: ´Pega IP´.[/color:e780d37258]
:idea: [color=blue:e780d37258]Seja mais claro no título.[/color:e780d37258]
:idea: [color=blue:e780d37258]Leia sempre regras de conduta.[/color:e780d37258]
Ztiago
Curtidas 0
Respostas
Otto
14/07/2004
:idea: Use sempre o link [url=http://delphiforum.icft.com.br/forum/search.php]Pesquisar [/url]no topo da página.
:arrow: Veja se isto pode lhe ajudar.. :wink:
:arrow: Veja se isto pode lhe ajudar.. :wink:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
ComboBox1: TComboBox;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
ANY_SIZE = 1;
type
PTMibIPAddrRow = ^TMibIPAddrRow;
TMibIPAddrRow = packed record
dwAddr: DWORD;
dwIndex: DWORD;
dwMask: DWORD;
dwBCastAddr: DWORD;
dwReasmSize: DWORD;
Unused1,
Unused2: WORD;
end;
PTMibIPAddrTable = ^TMibIPAddrTable;
TMibIPAddrTable = packed record
dwNumEntries: DWORD;
Table: array[0..ANY_SIZE - 1] of TMibIPAddrRow;
end;
function GetIpAddrTable( pIpAddrTable: PTMibIPAddrTable;
pdwSize: PULONG;
bOrder: BOOL ): DWORD;
stdcall; external ´IPHLPAPI.DLL´;
{ converts IP-address in network byte order DWORD to dotted decimal string}
function IpAddr2Str( IPAddr: DWORD ): string;
var
i : integer;
begin
Result := ´´;
for i := 1 to 4 do
begin
Result := Result + Format( ´¬3d.´, [IPAddr and $FF] );
IPAddr := IPAddr shr 8;
end;
Delete( Result, Length( Result ), 1 );
end;
procedure Get_IPAddrTable(Tipo: Integer; List: TStrings );
var
IPAddrRow : TMibIPAddrRow;
TableSize : DWORD;
ErrorCode : DWORD;
i : integer;
pBuf : PChar;
NumEntries : DWORD;
begin
if not Assigned( List ) then EXIT;
List.Clear;
TableSize := 0; ;
// first call: get table length
ErrorCode := GetIpAddrTable( PTMibIPAddrTable( pBuf ), @TableSize, true );
if Errorcode <> ERROR_INSUFFICIENT_BUFFER then
EXIT;
GetMem( pBuf, TableSize );
// get table
ErrorCode := GetIpAddrTable( PTMibIPAddrTable( pBuf ), @TableSize, true );
if ErrorCode = NO_ERROR then
begin
NumEntries := PTMibIPAddrTable( pBuf )^.dwNumEntries;
if NumEntries > 0 then
begin
inc( pBuf, SizeOf( DWORD ) );
for i := 1 to NumEntries do
begin
Case Tipo of
1 : begin
IPAddrRow := PTMIBIPAddrRow( pBuf )^;
with IPAddrRow do
List.Add( Format( ´¬8.8x|¬15s|¬15s|¬15s|¬8.8d´,
[dwIndex, IPAddr2Str( dwAddr ), IPAddr2Str( dwMask ),
IPAddr2Str( dwBCastAddr ), dwReasmSize ] ) );
inc( pBuf, SizeOf( TMIBIPAddrRow ) );
end;
2 : begin
IPAddrRow := PTMIBIPAddrRow( pBuf )^;
List.Add( Format(´¬15s´,[IPAddr2Str(IPAddrRow.dwAddr)]) );
inc( pBuf, SizeOf( TMIBIPAddrRow ) );
end;
//3 : //;
end;
end;
end
else
List.Add( ´no entries.´ );
end
else
List.Add( SysErrorMessage( ErrorCode ) );
// we must restore pointer!
dec( pBuf, SizeOf( DWORD ) + NumEntries * SizeOf( IPAddrRow ) );
FreeMem( pBuf );
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Get_IPAddrTable(1, Memo1.Lines);
Get_IPAddrTable(2, ComboBox1.Items);
end;
end.GOSTEI 0