function NBGetAdapterAddress(a: integer): String; //a指定多个网卡适配器中的哪一个0,1,2... Var NCB:TNCB; //NetBios控制块 ADAPTER:TADAPTERSTATUS; //取网卡状态 LANAENUM:TLANAENUM; //Netbios lana intIdx:Integer; //Temporary work value//临时变量 cRC:Char; //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 begin strTemp := strTemp + InttoHex(Integer(ADAPTER.adapter_address[intIdx]),2); if intIdx <> 5 then strTemp := strTemp + '-'; end; Result := strTemp; Finally End; end;