Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2018.04.01;
Скачать: CL | DM;

Вниз

Как определить MAC адрес НУЖНОГО адаптера   Найти похожие ветки 

 
Погроммист   (2016-04-06 19:58) [0]


function GetAdapterInfo(Lana: Ansichar): 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;


использую эти функции для определения мак адреса. Но возникла проблема, помимо основного адаптера у меня еще есть 2 от виртуальных машин. И проблема заключается в том, что эта функция возвращает то мак адрес одного адаптера то другого(после перезагрузки компа меняется адаптер в 0 элементе). Как получить мак адрес реального моего адаптера? В принципе меня бы и любой устроил, но только чтобы всегда был один и тот же. Я так понял что AdapterList это вроде как список адаптеров, но понять в этом "списке" я ничего не смог, т.к. там какая то билиберда.


 
Rouse_ ©   (2016-04-06 22:22) [1]

http://rouse.drkb.ru/network.php#netifenum


 
Погроммист   (2016-04-07 07:01) [2]

на win7 64x не работает. Она показывает 8 строчек с иероглифами и ни одного мак адреса и вообще ни одного параметра ни у одного интерфейса  не определяет.


 
NoUser ©   (2016-04-08 16:47) [3]

>[1], [2]
IP_ADDRESS_STRING = record
   S: array [0..15] of Char;                                           // <- AnsiChar
 end;

   AdapterName: array [0..MAX_ADAPTER_NAME_LENGTH + 3] of Char;        // <- AnsiChar
   Description: array [0..MAX_ADAPTER_DESCRIPTION_LENGTH + 3] of Char; // <- AnsiChar


 
Rouse_ ©   (2016-04-08 19:00) [4]


> Погроммист   (07.04.16 07:01) [2]
> на win7 64x не работает. Она показывает 8 строчек с иероглифами
> и ни одного мак адреса и вообще ни одного параметра ни у
> одного интерфейса  не определяет.

Так бывает - на то он и пример.
Включи мозг - и эх как все заработает


 
Signal   (2016-04-09 02:23) [5]

добавь имя сетевого адаптера,  вот и все включение мозга



Страницы: 1 вся ветка

Текущий архив: 2018.04.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.003 c
1-1356366310
Михаил
2012-12-24 20:25
2018.04.01
Сохранение документа AutoCAD


2-1459516762
mtk
2016-04-01 16:19
2018.04.01
Отслеживание изменений в директории


15-1470954808
Kilkennycat
2016-08-12 01:33
2018.04.01
SaaS. Практические технологии (плюсы и минусы) создания?


1-1356702635
vlk32
2012-12-28 17:50
2018.04.01
Ошибка в стандартной библиотеке?


2-1458549557
Signal
2016-03-21 11:39
2018.04.01
IWebBrowser2 не получается получить текст