function GetMAC(CardNo: integer): string; //CardNo指定多个网卡适配器中的哪一个0,1,2... var NCB: TNCB; // Netbios control block file://NetBios控制块 ADAPTER: TADAPTERSTATUS; // Netbios adapter status//取网卡状态 LANAENUM: TLANAENUM; // Netbios lana intIdx: Integer; // Temporary work value//临时变量 cRC: Char; // Netbios return code//NetBios返回值 strTemp: string; // Temporary string//临时变量 begin // Initialize Result := ''; try // Zero control blocl ZeroMemory(@NCB, SizeOf(NCB)); // Issue enum command NCB.ncb_command := Chr(NCBENUM); cRC := 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[a]; 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[a]; StrPCopy(NCB.ncb_callname, '*'); NCB.ncb_buffer := @ADAPTER; NCB.ncb_length := SizeOf(ADAPTER); cRC := NetBios(@NCB); // Convert it to string strTemp := ''; for intIdx := 0 to 5 do strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[intIdx]), 2); Result := strTemp; finally end; end;
function TForm1.GetMac(SendIP: String): String; var myip:ulong; mymac:array[0..5] of byte; mymaclength:ulong; begin myip:=inet_addr(PChar(SendIP)); mymaclength:=length(mymac); sendarp(myip,0,@mymac,@mymaclength); GetMac := 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;//------------------------------------------------------------------------------- //用一个调用给他就可以了
ipconfig /all
(你可用ipconfig /all > temp,然后打开temp文件读到mac地址)
//CardNo指定多个网卡适配器中的哪一个0,1,2...
var
NCB: TNCB; // Netbios control block file://NetBios控制块
ADAPTER: TADAPTERSTATUS; // Netbios adapter status//取网卡状态
LANAENUM: TLANAENUM; // Netbios lana
intIdx: Integer; // Temporary work value//临时变量
cRC: Char; // Netbios return code//NetBios返回值
strTemp: string; // Temporary string//临时变量
begin
// Initialize
Result := '';
try
// Zero control blocl
ZeroMemory(@NCB, SizeOf(NCB));
// Issue enum command
NCB.ncb_command := Chr(NCBENUM);
cRC := 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[a];
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[a];
StrPCopy(NCB.ncb_callname, '*');
NCB.ncb_buffer := @ADAPTER;
NCB.ncb_length := SizeOf(ADAPTER);
cRC := NetBios(@NCB);
// Convert it to string
strTemp := '';
for intIdx := 0 to 5 do
strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[intIdx]), 2);
Result := strTemp;
finally
end;
end;
var
myip:ulong;
mymac:array[0..5] of byte;
mymaclength:ulong;
begin
myip:=inet_addr(PChar(SendIP));
mymaclength:=length(mymac);
sendarp(myip,0,@mymac,@mymaclength);
GetMac := 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;//-------------------------------------------------------------------------------
//用一个调用给他就可以了
http://community.csdn.net/Expert/topic/4481/4481498.xml?temp=9.518069E-02