Thema: Delphi IP - Info basteln

Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: IP - Info basteln

  Alt 8. Feb 2007, 09:16
Guten Morgen,

vielleicht helfen Dir diese Codeschnipsel ein wenig und ein Blick in diesen Thread könnte auch nicht schaden.

Delphi-Quellcode:
 
uses
 NB30;
...
 function GetRechnerName: string;
    var
      len: DWORD;
    begin
      len := MAX_COMPUTERNAME_LENGTH + 1;
      SetLength(result, len);
      if not Windows.GetComputerName(PChar(result), len) then
        RaiseLastWin32Error;
      SetLength(result, len);
    end; //function

  function GetAdapterInfo(Lana: Char): String;
    var
      Adapter: TAdapterStatus;
      NCB: TNCB;
    begin
      FillChar(NCB, SizeOf(NCB), 0);
      NCB.ncb_command := Char(NCBRESET);
      NCB.ncb_lana_num := Lana;
      if Netbios(@NCB) <> Char(NRC_GOODRET) then
      begin
        Result := 'mac not found';
        Exit;
      end;

      FillChar(NCB, SizeOf(NCB), 0);
      NCB.ncb_command := Char(NCBASTAT);
      NCB.ncb_lana_num := Lana;
      NCB.ncb_callname := '*';

      FillChar(Adapter, SizeOf(Adapter), 0);
      NCB.ncb_buffer := @Adapter;
      NCB.ncb_length := SizeOf(Adapter);
      if Netbios(@NCB) <> Char(NRC_GOODRET) then
      begin
        Result := 'mac not found';
        Exit;
      end;
      Result :=
        IntToHex(Byte(Adapter.adapter_address[0]), 2) + ':' +
        IntToHex(Byte(Adapter.adapter_address[1]), 2) + ':' +
        IntToHex(Byte(Adapter.adapter_address[2]), 2) + ':' +
        IntToHex(Byte(Adapter.adapter_address[3]), 2) + ':' +
        IntToHex(Byte(Adapter.adapter_address[4]), 2) + ':' +
        IntToHex(Byte(Adapter.adapter_address[5]), 2);
    end;

  function GetMACAddress: string;
    var
      AdapterList: TLanaEnum;
      NCB: TNCB;
    begin
      FillChar(NCB, SizeOf(NCB), 0);
      NCB.ncb_command := Char(NCBENUM);
      NCB.ncb_buffer := @AdapterList;
      NCB.ncb_length := SizeOf(AdapterList);
      Netbios(@NCB);
      if Byte(AdapterList.length) > 0 then
        Result := GetAdapterInfo(AdapterList.lana[0])
      else
        Result := 'mac not found';
    end;

  function GetLocalIPs: String;
    type PPInAddr= ^PInAddr;
    var
      wsaData : TWSAData;
      HostInfo : PHostEnt;
      HostName : Array[0..255] of Char;
      Addr : PPInAddr;
    begin
      Result:='';
      if WSAStartup($0102, wsaData) <> 0 then
        Exit;
      try
        if GetHostName(HostName, SizeOf(HostName)) <> 0 then
          Exit;
        HostInfo:= GetHostByName(HostName);
        if HostInfo=nil then
          Exit;
        Addr:=Pointer(HostInfo^.h_addr_list);
        if (Addr=nil) or (Addr^=nil) then
          Exit;
        Result:=StrPas(inet_ntoa(Addr^^));
 // inc(Addr);
 // while Addr^ <> nil do begin
 // Result:=Result+^M^J+StrPas(inet_ntoa(Addr^^));
 // inc(Addr);
 // end;
      finally
        WSACleanup;
      end;
    end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat