1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63:
| function GetMACAdress:String; var NCB : PNCB; Adapter :PAdapterStatus;
URetCode :Pchar; RetCode :char; I : Integer; Lenum : PlanaEnum; _SystemID :String; TMPSTR :String; begin Result:=''; _SystemID:=''; Getmem(NCB,sizeof(TNCB)); Fillchar(NCB^,Sizeof(TNCB),0);
Getmem(Lenum,sizeof(TLanaEnum)); Fillchar(Lenum^,Sizeof(TLanaEnum),0);
Getmem(Adapter,sizeof(TAdapterStatus)); Fillchar(Adapter^,Sizeof(TAdapterStatus),0);
Lenum.Length:=chr(0); NCB.ncb_command:=chr(NCBENUM); NCB.ncb_buffer:=pointer(Lenum); NCB.ncb_length:=sizeof(Lenum); RetCode:=Netbios(NCB);
i:=0; repeat Fillchar(NCB^,Sizeof(TNCB),0); Ncb.ncb_command:= chr(NCBRESET); Ncb.ncb_lana_num:=lenum.lana[I]; RetCode:= Netbios(Ncb);
Fillchar(NCB^,Sizeof(TNCB),0); Ncb.ncb_command:= chr(NCBASTAT); Ncb.ncb_lana_num:= lenum.lana[I]; Ncb.ncb_callname:='* ';
Ncb.ncb_buffer:=pointer(Adapter);
Ncb.ncb_length:=sizeof(TAdapterStatus); RetCode:= Netbios(Ncb); if (RetCode=chr(0)) or (RetCode=chr(6)) then begin _SystemId:=inttohex(ord(Adapter.adapter_address[0]),2)+'-'+ inttohex(ord(Adapter.adapter_address[1]),2)+'-'+ inttohex(ord(Adapter.adapter_address[2]),2)+'-'+ inttohex(ord(Adapter.adapter_address[3]),2)+'-'+ inttohex(ord(Adapter.adapter_address[4]),2)+'-'+ inttohex(ord(Adapter.adapter_address[5]),2);
end; inc(i); until (I>=ord(Lenum.length)) or (_SystemID<>'00-00-00-00-00-00'); FreeMem(NCB); FreeMem(Adapter); FreeMem(Lenum); GetMacAdress:=_SystemID; end; |