delphi 获取内网所有IP地址


本文整理自网络,侵删。

 

Const
MAX_ADAPTER_NAME_LENGTH        = 256;
MAX_ADAPTER_DESCRIPTION_LENGTH = 128;
MAX_ADAPTER_ADDRESS_LENGTH     = 8;

Type
TIPAddressString = Array[0..4*4-1] of Char;
PIPAddrString = ^TIPAddrString;
TIPAddrString = Record
    Next      : PIPAddrString;
    IPAddress : TIPAddressString;
    IPMask    : TIPAddressString;
    Context   : Integer;
End;

PIPAdapterInfo = ^TIPAdapterInfo;
TIPAdapterInfo = Record { IP_ADAPTER_INFO }
    Next                : PIPAdapterInfo;
    ComboIndex          : Integer;
    AdapterName         : Array[0..MAX_ADAPTER_NAME_LENGTH+3] of Char;
    Description         : Array[0..MAX_ADAPTER_DESCRIPTION_LENGTH+3] of Char;
    AddressLength       : Integer;
    Address             : Array[1..MAX_ADAPTER_ADDRESS_LENGTH] of Byte;
    Index               : Integer;
    _Type               : Integer;
    DHCPEnabled         : Integer;
    CurrentIPAddress    : PIPAddrString;
    IPAddressList       : TIPAddrString;
    GatewayList         : TIPAddrString;
End;

 Function GetAdaptersInfo(AI : PIPAdapterInfo; Var BufLen : Integer) : Integer; StdCall; External 'iphlpapi.dll' Name 'GetAdaptersInfo';

function GetLocalIP():string;
  Function GetAddrString(Addr : PIPAddrString) : String;
  Begin
      Result := ''; 
      While (Addr <> nil) do Begin
        Result := Result+Addr^.IPAddress+#13;
        Addr := Addr^.Next;
      End;
  End;
var
  AI,Work : PIPAdapterInfo;
  Size    : Integer;
  Res     : Integer;
  temps   :string;
begin
 Size := 5120;
 GetMem(AI,Size);
 work:=ai;
 Res := GetAdaptersInfo(AI,Size);
 If (Res <> ERROR_SUCCESS) Then halt;
 repeat
    temps:=GetAddrString(@Work^.IPAddressList);
    if temps <> '0.0.0.0'+#13 then result:=result+temps+'/';
    work:=work^.Next ;
 until (work=nil);
 if copy(result,length(result),length(result)-1) = '/' then delete(result,length(result),length(result)-1);
end;

//showmessage(GetLocalIP);

相关阅读 >>

Delphi直接实现分享图片功能

Delphi 安装fastreport4.8.xx

Delphi createdir 建立文件夹路径

Delphi shutdown() 关机

Delphi中如何捕获mediaplayer播放的视频中的每一帧 ?

Delphi xe8 为image设置渐变效果

Delphi debug权限提升

Delphi代码中嵌入汇编asm代码

Delphi获取默认浏览器

Delphi 读取内存

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...