Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.25;
Скачать: CL | DM;

Вниз

MAC Адрес   Найти похожие ветки 

 
Andrey_P   (2001-12-04 13:23) [0]

Подскажите, плиз, как мне узнать MAC адрес сетевой карты?


 
Dmitry V. Averuanov ©   (2001-12-04 14:05) [1]

У меня работает как часики

ъ

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(T! NCB),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;





 
SFF   (2001-12-04 19:08) [2]

Такой вариант, кстати, не каждый раз срабатывает.
Надежнее через SNMP.


 
Dimka Maslov ©   (2001-12-04 19:51) [3]

function GetMACAddress: Int64;

const
Funcs: array[Boolean] of TString = ("UuidCreate", "UuidCreateSequential");

procedure DoCreate(Func: TString; out GUID: TGUID);
var
UuidCreateFunc : function (var guid: TGUID): LongInt stdcall;
RPCRT4: HINST;
begin
RPCRT4:=LoadLibrary("RPCRT4.DLL");
UuidCreateFunc:=GetProcAddress(RPCRT4, PChar(Func));
Result:=UuidCreateFunc(GUID);
ShowMessage(GUIDToString(GUID));
FreeLibrary(RPCRT4);
end;

function Win2K: Boolean;
begin
Result := (Win32MajorVersion > 4) and (Win32Platform = VER_PLATFORM_WIN32_NT);
end;

function WinME: Boolean;
begin
Result:=(Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and
((Win32MajorVersion>4) or ((Win32MajorVersion = 4) and (Win32MinorVersion >= 90)));
end;

var
guid: TGUID;
i: integer;

begin
Result:=0;
DoCreate(Funcs[Win2K or WinME], GUID);
for i:=2 to 7 do Result:=(Result shl 8) or guid.d4[i];
end;



Страницы: 1 вся ветка

Текущий архив: 2002.02.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
3-79280
Ser_Kham1
2002-01-31 12:39
2002.02.25
Разумная структура данных


14-79437
XeN
2002-01-06 01:46
2002.02.25
command line


1-79324
vinni2000
2002-02-07 10:15
2002.02.25
Есть вопрос!!!


6-79408
dimonf
2001-12-06 18:10
2002.02.25
Построение отчетов с помощью HTML


1-79321
vinni2000
2002-02-07 19:10
2002.02.25
Нужен удобный компонент для выбора Каталога