Форум: "Сети";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];
Внизкак узнать МАК-адрес сетевой карты Найти похожие ветки
← →
Kirill (2001-11-12 13:38) [2]Попробуй это, не уверен (сам не пробовал):
uses NB30;
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];
// Must be 16
Ncb.ncb_callname:="* ";
Ncb.ncb_buffer:=pointer(Adapter);
Ncb.ncb_length:=sizeof(TAdapterStatus);
RetCode:= Netbios(Ncb);
//---- calc _systemId from mac-address[2-5] XOR mac-address[1]...
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;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := GetMACAdress;
end;
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.006 c