Get information about the installed network adapters

前端 未结 5 1182
无人共我
无人共我 2020-12-28 11:23

I am using Delphi XE2 Update 4 on Windows XP sp3

I am looking to get max possible information from installed network adapters, specially the broadcast ip.

Fo

5条回答
  •  误落风尘
    2020-12-28 11:57

    Update for Delphi 10.2 Tokyo supported.

    procedure TForm4.RetrieveLocalAdapterInformation;
    var
      pAdapterInfo: PIP_ADAPTER_INFO;
      AdapterInfo: IP_ADAPTER_INFO;
      BufLen: DWORD;
      Status: DWORD;
      strMAC: String;
      i: Integer;
    
      strings: TStrings;
    begin
      strings:= Tstringlist.create;
      strings.Clear;
    
      BufLen:= sizeof(AdapterInfo);
      pAdapterInfo:= @AdapterInfo;
    
      Status:= GetAdaptersInfo(nil, BufLen);
      pAdapterInfo:= AllocMem(BufLen);
      try
        Status:= GetAdaptersInfo(pAdapterInfo, BufLen);
    
        if (Status <> ERROR_SUCCESS) then
          begin
            case Status of
              ERROR_NOT_SUPPORTED:
                strings.Add('GetAdaptersInfo is not supported by the operating ' +
                            'system running on the local computer.');
              ERROR_NO_DATA:
                strings.Add('No network adapter on the local computer.');
            else
                strings.Add('GetAdaptersInfo failed with error #' + IntToStr(Status));
            end;
            Dispose(pAdapterInfo);
            Exit;
          end;
    
        while (pAdapterInfo <> nil) do
          begin
          memo1.Lines.Add('');
             memo1.Lines.Add('Description: ------------------------' + pAdapterInfo^.Description);
             memo1.Lines.Add('Name: ' + pAdapterInfo^.AdapterName);
    
            strMAC := '';
            for I := 0 to pAdapterInfo^.AddressLength - 1 do
                strMAC := strMAC + '-' + IntToHex(pAdapterInfo^.Address[I], 2);
    
            Delete(strMAC, 1, 1);
             memo1.Lines.Add('MAC address: ' + strMAC);
             memo1.Lines.Add('IP address: ' + pAdapterInfo^.IpAddressList.IpAddress.S);
             memo1.Lines.Add('IP subnet mask: ' + pAdapterInfo^.IpAddressList.IpMask.S);
             memo1.Lines.Add('Gateway: ' + pAdapterInfo^.GatewayList.IpAddress.S);
             memo1.Lines.Add('DHCP enabled: ' + IntTOStr(pAdapterInfo^.DhcpEnabled));
             memo1.Lines.Add('DHCP: ' + pAdapterInfo^.DhcpServer.IpAddress.S);
             memo1.Lines.Add('Have WINS: ' + BoolToStr(pAdapterInfo^.HaveWins,True));
             memo1.Lines.Add('Primary WINS: ' + pAdapterInfo^.PrimaryWinsServer.IpAddress.S);
             memo1.Lines.Add('Secondary WINS: ' + pAdapterInfo^.SecondaryWinsServer.IpAddress.S);
    
            pAdapterInfo:= pAdapterInfo^.Next;
        end;
      finally
        Dispose(pAdapterInfo);
        strings.free;
      end;
    end;
    
    procedure TForm4.Button1Click(Sender: TObject);
    begin
       RetrieveLocalAdapterInformation//
    end;
    

提交回复
热议问题