반응형
function GetMACAdress2: string;
var
NCB: PNCB;
Adapter: PAdapterStatus;
RetCode: char;
I: Integer;
Lenum: PlanaEnum;
_SystemID: 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);
i := 0;
// Repeat
Fillchar(NCB^ ,Sizeof(TNCB) ,0);
Ncb.ncb_command := chr(NCBRESET);
Ncb.ncb_lana_num := lenum.lana[I];
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;
FreeMem(NCB);
FreeMem(Adapter);
FreeMem(Lenum);
GetMacAdress2 := _SystemID;
end;
<
반응형
'Developers > Delphi[델파이]' 카테고리의 다른 글
[Delphi] TIdHTTP 통해 https 통신 (85) | 2019.09.19 |
---|---|
Undeclared identifier 에러 발생 할 때 (1) | 2019.09.16 |
[delphi] 날짜형식 (0) | 2019.09.16 |