Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

МАС-адрес


Kremen ©   (2004-02-17 14:28:00) 

Подскажите, как узнать МАС-адрес своей сетевой?


Rouse_   (2004-02-17 15:18:00) [1]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, NB30;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   function GetMACAdress:String;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.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);
  if (RetCode=chr(0)) or (RetCode=chr(6)) then begin
     _SystemId:=SysUtils.inttohex(ord(Adapter.adapter_address[0]),2)+'-'+
                SysUtils.inttohex(ord(Adapter.adapter_address[1]),2)+'-'+
                SysUtils.inttohex(ord(Adapter.adapter_address[2]),2)+'-'+
                SysUtils.inttohex(ord(Adapter.adapter_address[3]),2)+'-'+
                SysUtils.inttohex(ord(Adapter.adapter_address[4]),2)+'-'+
                SysUtils.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.FormCreate(Sender: TObject);
begin
Caption := GetMACAdress;
end;

end.


Желаю успехов


Kremen   (2004-02-17 14:28:00) [2]

Я имел в виду програмно узнать


Наверх

Титульная страница Поиск, карта сайта Написать письмо