获取本机MAC地址

获取本机MAC地址方法一:

function MacAddress: string; var   Lib: Cardinal;   Func: function(GUID: PGUID): Longint; stdcall;   GUID1, GUID2: TGUID; begin   Result := '';   Lib := LoadLibrary('rpcrt4.dll');   if Lib <> 0 then   begin     if Win32Platform <>VER_PLATFORM_WIN32_NT then       @Func := GetProcAddress(Lib, 'UuidCreate')       else @Func := GetProcAddress(Lib, 'UuidCreateSequential');     if Assigned(Func) then     begin       if (Func(@GUID1) = 0) and         (Func(@GUID2) = 0) and         (GUID1.D4[2] = GUID2.D4[2]) and         (GUID1.D4[3] = GUID2.D4[3]) and         (GUID1.D4[4] = GUID2.D4[4]) and         (GUID1.D4[5] = GUID2.D4[5]) and         (GUID1.D4[6] = GUID2.D4[6]) and         (GUID1.D4[7] = GUID2.D4[7]) then       begin         Result :=          IntToHex(GUID1.D4[2], 2) + '-' +          IntToHex(GUID1.D4[3], 2) + '-' +          IntToHex(GUID1.D4[4], 2) + '-' +          IntToHex(GUID1.D4[5], 2) + '-' +          IntToHex(GUID1.D4[6], 2) + '-' +          IntToHex(GUID1.D4[7], 2);       end;     end;     FreeLibrary(Lib);   end; end;
获得本机MAC地址方法二:  
在delphi的nb30.pas单元中,包含了对netbios协议的完全支持,在该单元中定义了一个名为netbios的函数,通过该函数就能够得到本机的MAC地址.

function GetNetBIOSAddress : string; var   ncb   : TNCB;    status   : TAdapterStatus;    lanenum : TLanaEnum;      procedure ResetAdapter (num : char);      begin        fillchar(ncb,sizeof(ncb),0);        ncb.ncb_command:=char(NCBRESET);        ncb.ncb_lana_num:=num;        Netbios(@ncb);      end; var    i:integer;    lanNum   : char;    address : record               part1 : Longint;               part2 : Word;              end absolute status; begin    Result:='';    fillchar(ncb,sizeof(ncb),0);      ncb.ncb_command:=char(NCBENUM);      ncb.ncb_buffer:=@lanenum;      ncb.ncb_length:=sizeof(lanenum);    Netbios(@ncb);    if lanenum.length=#0 then exit;    lanNum:=lanenum.lana[0];    ResetAdapter(lanNum);    fillchar(ncb,sizeof(ncb),0);      ncb.ncb_command:=char(NCBASTAT);      ncb.ncb_lana_num:=lanNum;      ncb.ncb_callname[0]:='*';      ncb.ncb_buffer:=@status;      ncb.ncb_length:=sizeof(status);    Netbios(@ncb);    ResetAdapter(lanNum);    for i:=0 to 5 do    begin      result:=result+inttoHex(integer(Status.adapter_address[i]),2);      if (i<5) then          result:=result+'-';    end; end;
 

你可能感兴趣的:(function,String,command,Integer,buffer,Delphi)