Mac Adresse auslesen mit NetBios

Alle Fragen zur Netzwerkkommunikation
Antworten
dw40u
Beiträge: 8
Registriert: Di 5. Aug 2008, 18:54

Mac Adresse auslesen mit NetBios

Beitrag von dw40u »

So kann die Mac Adresse ausgelesen werden:

Code: Alles auswählen

uses
jwanb30;
 
  function  MacAdresse():string;                         //Mac Adresse auslesen
  function  GetAdapterInfo(Lana: UChar): String;
 
implementation
 
function GetAdapterInfo(Lana: UChar): String;
var
  Adapter: TAdapterStatus;
  NCB: TNCB;
begin
  FillChar(NCB, SizeOf(NCB), 0);
  NCB.ncb_command := NCBRESET;
  NCB.ncb_lana_num := Lana;
  if Netbios(@NCB) <> NRC_GOODRET then
  begin
    Result := '';
    Exit;
  end;
 
  FillChar(NCB, SizeOf(NCB), 0);
  NCB.ncb_command := NCBASTAT;
  NCB.ncb_lana_num := Lana;
  NCB.ncb_callname := '*';
 
  FillChar(Adapter, SizeOf(Adapter), 0);
  NCB.ncb_buffer := @Adapter;
  NCB.ncb_length := SizeOf(Adapter);
  if Netbios(@NCB) <> NRC_GOODRET then
  begin
    Result := '';
    Exit;
  end;
  Result :=
    IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' +
    IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' +
    IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' +
    IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' +
    IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' +
    IntToHex(Byte(Adapter.adapter_address[5]), 2);
end;
 
 
function  MacAdresse():string; //Hardware Adresse der Netzwerkkarte auslesen
var
  AdapterList: TLanaEnum;
  NCB: TNCB;
begin
  FillChar(NCB, SizeOf(NCB), 0);
  NCB.ncb_command := NCBENUM;
  NCB.ncb_buffer := @AdapterList;
  NCB.ncb_length := SizeOf(AdapterList);
  Netbios(@NCB);
  if Byte(AdapterList.length) > 0 then
    Result := GetAdapterInfo(AdapterList.lana[0])
  else
    Result := '';
end;

Antworten