怎样获取网卡的MAC地址?

解决方案 »

  1.   

    一般使用NetBios接口方法
    Google上很多例子的http://lysoft.7u7.net
      

  2.   

    快速取得CPU序列号,网卡Mac地址,硬盘序列号,注册码示例源程序 
    请参考这个地址:http://www.delphifans.com/SoftView/SoftView_1171.html
      

  3.   

    http://www.xrw-123.go.nease.net/自己下载
      

  4.   

    通过IP取MAC地址 
    uses
      WinSock;Function sendarp(ipaddr:ulong;
                     temp:dword;
                     ulmacaddr:pointer;
                     ulmacaddrleng:pointer) : DWord; StdCall; External 'Iphlpapi.dll' Name 'SendARP';procedure TForm1.Button1Click(Sender: TObject);
    var
      myip:ulong;
      mymac:array[0..5] of byte;
      mymaclength:ulong;
      r:integer;
    begin
      myip:=inet_addr(PChar('192.168.6.180'));
      mymaclength:=length(mymac);
      r:=sendarp(myip,0,@mymac,@mymaclength);
      label1.caption:='errorcode:'+inttostr(r);
      label2.caption:=format('%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x',[mymac[0],mymac[1],mymac[2],mymac[3],mymac[4],mymac[5]]);
    end; 
      

  5.   

    function GetMAC:string;
    var
      ncb : TNCB;
      s:string;
      Adapt : TAdapterStatus;
      LanaEnum : TLanaEnum;
      i, j, m : Integer;
      strPart, strMac : string;
    begin
      FillChar(ncb, SizeOf(TNCB), 0);
      ncb.ncb_command := Char(NCBEnum);
      ncb.ncb_buffer := PChar(@lanaEnum);
      ncb.ncb_length := SizeOf(TLanaEnum);
      s:=Netbios(@ncb);
      for i := 0 to Integer(LanaEnum.length)-1 do  begin
        FillChar(ncb, SizeOf(TNCB), 0);
        ncb.ncb_command := Char(NCBReset);
        ncb.ncb_lana_num := LanaEnum.lana[i];
        Netbios(@ncb);
        Netbios(@ncb);
        FillChar(ncb, SizeOf(TNCB), 0);
        ncb.ncb_command := Chr(NCBAstat);
        ncb.ncb_lana_num := lanaEnum.lana[i];
        ncb.ncb_callname := '*               ';
        ncb.ncb_buffer := PChar(@adapt);
        ncb.ncb_length := SizeOf(TAdapterStatus);
        m:=0;
        if (Win32Platform = VER_PLATFORM_WIN32_NT) then  m:=1;
        if m=1 then begin
          if Netbios(@ncb) = Chr(0) then
            strMac := '';
          for j := 0 to 5 do begin
            strPart := IntToHex(integer(adapt.adapter_address[j]), 2);
            strMac := strMac + strPart + '-';
          end;
          SetLength(strMac, Length(strMac)-1);
        end;
        if m=0 then
          if Netbios(@ncb) <> Chr(0) then begin
            strMac := '';
            for j := 0 to 5 do begin
              strPart := IntToHex(integer(adapt.adapter_address[j]), 2);
              strMac := strMac + strPart + '-';
            end;
            SetLength(strMac, Length(strMac)-1);
          end;
      end;
      Result:=strmac;
    end;