function GetAdapterInfo(Lana: Char): string; var Adapter: PAdapterStatus; NCB: TNCB; BReset: Boolean; begin BReset := (Win32Platform = VER_PLATFORM_WIN32_NT); if BReset then 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 := 'reset wrong'; Exit; end; end; FillChar(NCB, SizeOf(NCB), 0); NCB.ncb_command := Char(NCBASTAT); NCB.ncb_lana_num := Lana; NCB.ncb_callname := '*'; NCB.ncb_length := SizeOf(TAdapterStatus) + 255 * SizeOf(TNameBuffer); GetMem(Adapter, NCB.ncb_length); NCB.ncb_buffer := PChar(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; i: integer; 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 for i := 0 to Byte(AdapterList.Length) - 1 do begin Result := Result + '''' + GetAdapterInfo(AdapterList.lana[i]) + ''','; end else Result := 'no adapter'; Result[length(Result)] := ' '; end;肯定能用,别忘了use unit NB30
//uses windows,sysutils,nb30; //取MAC地址function GetNetMac():shortString; var NCB:TNCB; ADAPTER:TADAPTERSTATUS; i:smallint; vre:char; begin Result := ''; try ZeroMemory(@NCB,sizeof(NCB)); NCB.ncb_command := chr(NCBRESET); vre := NetBios(@NCB); if vre = #0 then begin ZeroMemory(@NCB,sizeof(NCB)); NCB.ncb_command := chr(NCBASTAT); strpcopy(NCB.ncb_callname,'* '); //NCB.ncb_CallName field (in a 16-chr string). NCB.ncb_lana_num := chr(0); NCB.ncb_buffer := @ADAPTER; NCB.ncb_length := sizeof(ADAPTER); vre := NetBios(@NCB); if vre = #0 then begin result := ''; for i :=0 to 5 do result := Result+IntTOHex(integer(ADAPTER.adapter_address[i]),2); end; end; except end; end;
取mac地址的代码
应该是这个
var
Adapter: PAdapterStatus;
NCB: TNCB;
BReset: Boolean;
begin
BReset := (Win32Platform = VER_PLATFORM_WIN32_NT);
if BReset then
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 := 'reset wrong';
Exit;
end;
end; FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBASTAT);
NCB.ncb_lana_num := Lana;
NCB.ncb_callname := '*'; NCB.ncb_length := SizeOf(TAdapterStatus) + 255 * SizeOf(TNameBuffer);
GetMem(Adapter, NCB.ncb_length);
NCB.ncb_buffer := PChar(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;
i: integer;
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
for i := 0 to Byte(AdapterList.Length) - 1 do
begin
Result := Result + '''' + GetAdapterInfo(AdapterList.lana[i]) + ''',';
end
else
Result := 'no adapter';
Result[length(Result)] := ' ';
end;肯定能用,别忘了use unit NB30
//取MAC地址function GetNetMac():shortString;
var
NCB:TNCB;
ADAPTER:TADAPTERSTATUS;
i:smallint;
vre:char;
begin
Result := '';
try
ZeroMemory(@NCB,sizeof(NCB));
NCB.ncb_command := chr(NCBRESET);
vre := NetBios(@NCB);
if vre = #0 then
begin
ZeroMemory(@NCB,sizeof(NCB));
NCB.ncb_command := chr(NCBASTAT);
strpcopy(NCB.ncb_callname,'* '); //NCB.ncb_CallName field (in a 16-chr string).
NCB.ncb_lana_num := chr(0);
NCB.ncb_buffer := @ADAPTER;
NCB.ncb_length := sizeof(ADAPTER);
vre := NetBios(@NCB);
if vre = #0 then
begin
result := '';
for i :=0 to 5 do
result := Result+IntTOHex(integer(ADAPTER.adapter_address[i]),2);
end;
end;
except
end;
end;
记得网卡、主板、CPU都有GUID,别的就不晓得了
问题 2
在命令提示符下,键入ipconfig /all,就显示出你所装的所有网卡的MAC