注册 登录
编程论坛 Delphi论坛

获取IP地址,在XP中运行正常可以正常读取拨号IP,在WIN7中却无法读拨号IP而读取本地网卡IP,为什么?

rogersgb 发布于 2017-10-10 12:59, 2248 次点击
//获取IP地址
Function GetLocalIp(InternetIP:boolean):String;
   type
     TaPInAddr = Array[0..10] of PInAddr;
     PaPInAddr = ^TaPInAddr;
   var
     phe: PHostEnt;
     pptr: PaPInAddr;
     Buffer: Array[0..63] of Char;
     I: Integer;
     GInitData: TWSAData;
     IP: String;
begin
     Screen.Cursor := crHourGlass;
     try
       WSAStartup($101, GInitData);
       IP:='0.0.0.0';
       GetHostName(Buffer, SizeOf(Buffer));
       phe := GetHostByName(buffer);
       if phe = nil then
       begin
         ShowMessage(IP);
         Result:=IP;
         Exit;
       end;
       pPtr := PaPInAddr(phe^.h_addr_list);
       if InternetIP then
         begin
           I := 0;
           while pPtr^[I] <> nil do
             begin
               IP := inet_ntoa(pptr^[I]^);
               Inc(I);
             end;
         end
       else
         IP := inet_ntoa(pptr^[0]^);
       WSACleanup;
       Result:=IP;//如果上网则为上网ip否则是网卡ip
     finally
       Screen.Cursor := crDefault;
     end;
end;

//Showmessage(GetLocalIp(true));

[此贴子已经被作者于2017-10-10 13:10编辑过]

0 回复
1