如何获取本机ip和网卡信息

解决方案 »

  1.   

    function LIP : 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;
    begin
      WSAStartup($101, GInitData);
      Result := '';
      GetHostName(Buffer, SizeOf(Buffer));
      phe :=GetHostByName(buffer);
      if phe = nil then Exit;
      pptr := PaPInAddr(Phe^.h_addr_list);
      I := 0;
      while pptr^[I] <> nil do begin
        result:=StrPas(inet_ntoa(pptr^[I]^));
        Inc(I);
      end;
      WSACleanup;
    end;
    网卡就不好办了,好像DEMO里面提供了
      

  2.   

    function NBGetAdapterAddress : String ;
    //=============================================================================
    //Returns adapter card address.
    //=============================================================================
    var
      NCB : TNCB ; // Netbios control block //NetBios&iquest;&Oslash;&Ouml;&AElig;&iquest;é
      ADAPTER : TADAPTERSTATUS ; // Netbios adapter status//&Egrave;&iexcl;&Iacute;&oslash;&iquest;¨×&acute;&Igrave;&not;
      LANAENUM : TLANAENUM ; // Netbios lana
      intIdx : Integer ; // Temporary work value//&Aacute;&Ugrave;&Ecirc;±±&auml;&Aacute;&iquest;
      cRC : Char ; // Netbios return code//NetBios·&micro;&raquo;&Oslash;&Ouml;&micro;
      strTemp : String ; // Temporary string//&Aacute;&Ugrave;&Ecirc;±±&auml;&Aacute;&iquest;
    begin
      // Initialize
      Result := '' ;  try
        // Zero control blocl
        ZeroMemory(@NCB,SizeOf(NCB)) ;    // Issue enum command
        NCB.ncb_command := Chr(NCBENUM) ;
        //cRC := NetBios(@NCB) ;//Modify by Gale
        NetBios(@NCB);    // Reissue enum command
        NCB.ncb_buffer := @LANAENUM ;
        NCB.ncb_length := SizeOf(LANAENUM) ;
        cRC := NetBios(@NCB) ;
        if Ord(cRC)<>0 then
            exit ;    // Reset adapter
        ZeroMemory(@NCB,SizeOf(NCB)) ;
        NCB.ncb_command := Chr(NCBRESET) ;
        NCB.ncb_lana_num := LANAENUM.lana[0] ;
        cRC := NetBios(@NCB) ;
        if Ord(cRC)<>0 then
            exit ;    // Get adapter address
        ZeroMemory(@NCB,SizeOf(NCB)) ;
        NCB.ncb_command := Chr(NCBASTAT) ;
        NCB.ncb_lana_num := LANAENUM.lana[0] ;
        StrPCopy(NCB.ncb_callname,'*') ;
        NCB.ncb_buffer := @ADAPTER ;
        NCB.ncb_length := SizeOf(ADAPTER) ;
        //cRC := NetBios(@NCB) ;//Modify by Gale remove Hint:'cRC' never used
        NetBios(@NCB);    // Convert it to string
        strTemp := HexBL(Byte(ADAPTER.Adapter_Address[0]));
        for intIdx := 1 to 5 do
            strTemp := strTemp+':'+HexBL(Byte(ADAPTER.adapter_address[intIdx]));
        Result := strTemp ;
      finally
      end ;
    end ;
      

  3.   

    yangdear() 哥哥,
    HexBl????????
    是什么函数?
    要加放哪个单元文件才能用啊,,
    我在Delphi帮助和 MSDN 里都打不到啊