Приветствую Вас, Гость! Регистрация RSS

Мой сайт

Суббота, 16.05.2026
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Maxxx  
Получение MAC адреса компьютера
NisДата: Суббота, 10.09.2011, 16:49 | Сообщение # 1
Basicminator
Группа: Администраторы
Сообщений: 46
Репутация: 32767
Статус: Offline


Для того, чтобы этот код работал, необходимо включить в проект юнит NB30. Простой вызов функции GetMACAddress возвращает адрес первого установленного сетевого адаптера.

Данный пример был составлен на основе статьи на сайте Borland:
http://community.borland.com/article/0,1410,26040,00.html

Code
uses
   NB30;
function GetAdapterInfo(Lana: Char): string;
var
   Adapter: TAdapterStatus;
   NCB: TNCB;
begin
   FillChar(NCB, SizeOf(NCB), 0);
   NCB.ncb_command := Char(NCBRESET);
   NCB.ncb_lana_num := Lana;
   if Netbios(@NCB) <> Char(NRC_GOODRET) then
   begin
     Result := 'mac not found';
     Exit;
   end;
   FillChar(NCB, SizeOf(NCB), 0);
   NCB.ncb_command := Char(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) <> Char(NRC_GOODRET) then
   begin
     Result := 'mac not found';
     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 GetMACAddress: string;
var
   AdapterList: TLanaEnum;
   NCB: TNCB;
begin
   FillChar(NCB, SizeOf(NCB), 0);
   NCB.ncb_command := Char(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 := 'mac not found';
end;
 
  • Страница 1 из 1
  • 1
Поиск: