Autor Beitrag
Torsten
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: Do 20.06.02 00:14 
Moinsen Leute!

Hiermit könnt ihr die MAC-Adresse einer Netzwerkkarte ermitteln.
Benötigt wird noch die unit NB30
ausblenden volle Höhe Delphi-Quelltext
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);
    // Berechnung 
     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;



Hinweis: Hier befindet sich eine erweiterte Version dieser Lösung, die die MAC-Adressen aller Lan-Adapter (NetBIOS-basiert) auslesen kann.

Hier ist eine Lösung, die die MAC-Adresse eines beliebigen PCs im LAN ermitteln kann, auch die eigene (=localhost).

Moderiert von user profile iconNarses: Beitrag überarbeitet.