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

Вниз

получение MAC адресов сетевых карт в offline   Найти похожие ветки 

 
Makhanev   (2006-01-24 11:33) [0]

Получаю mac при включенной сети - без проблем.
А вот в offline не получается. Например, при использовании функции NetBios в режиме offline она говорит что lana.count=0.

Так есть ли рабочий способ определить свои mac адреса, если сеть отключена?
(cmd->ipconfig/all показывает же....)


 
qwertyu   (2006-04-28 12:15) [1]

Столкнулся с той же проблемой. Если еще нужно нашел здесь код в том числе и для получения mac. С небольшими изменениями:

unit Unit1;

interface

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

type

TMibIfRow = packed record
   wszName  : array[0..255] of WideChar;
   dwIndex  : DWORD;
   dwType  : DWORD;
   dwMtu  : DWORD;
   dwSpeed  : DWORD;
   dwPhysAddrLen : DWORD;
   bPhysAddr  : array[0..7] of Byte;
   dwAdminStatus : DWORD;
   dwOperStatus : DWORD;
   dwLastChange : DWORD;
   dwInOctets  : DWORD;
   dwInUcastPkts : DWORD;
   dwInNUCastPkts : DWORD;
   dwInDiscards : DWORD;
   dwInErrors  : DWORD;
   dwInUnknownProtos : DWORD;
   dwOutOctets  : DWORD;
   dwOutUCastPkts : DWORD;
   dwOutNUCastPkts : DWORD;
   dwOutDiscards : DWORD;
   dwOutErrors  : DWORD;
   dwOutQLen  : DWORD;
   dwDescrLen  : DWORD;
   bDescr  : array[0..255] of Char;
 end;
 TMibIfArray = array [0..512] of TMibIfRow;
 PMibIfRow = ^TMibIfRow;
 PmibIfArray = ^TmibIfArray;

  TMibIfTable = packed record
  dwNumEntries : DWORD;
  Table     : TMibIfArray;
end;
PMibIfTable = ^ TMibIfTable;

 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   procedure GetAllMAC(Sender: TObject);
   { Private declarations }
 public
   { Public declarations }
 end;

var
GetIfTable:function( pIfTable: PMibIfTable;
    pdwSize : PULONG;
    bOrder : Boolean ): DWORD; stdcall ;
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.GetAllMAC(Sender: TObject);
 // Вспомогательная функция, преобразующая МАС адрес к "нормальному" виду
 //Определяем специальный тип, чтобы можно было передать в функцию массив
 type TMAC = array [0..7] of Byte;
 //В качестве первого значения массив, второе значение, размер данных в массиве
 function GetMAC(Value: TMAC; Length: DWORD): String;
 var
   i: Integer;
 begin
   if Length = 0 then Result := "00-00-00-00-00-00" else
   begin
     Result := "";
     for i:= 0 to Length -2 do
       Result := Result + IntToHex(Value[i],2)+"-";
     Result := Result + IntToHex(Value[Length-1],2);
   end;
 end;

//Сама процедура
var
 FLibHandle  : THandle;
 Table  : TMibIfTable;
 i   : Integer;
 Size    : Integer;
begin
 FLibHandle := LoadLibrary("IPHLPAPI.DLL"); //Загружаем библиотеку
 if FLibHandle = 0 then Exit;
 @GetIfTable := GetProcAddress(FLibHandle, "GetIfTable");
 if not Assigned(GetIfTable) then
 begin
   FreeLibrary(FLibHandle);
   Close;
 end;

 Size := SizeOf(Table);
 if GetIfTable(@Table, @Size, False ) = 0 then //Выполняем функцию
 begin
   for i:= 0 to Table.dwNumEntries-1 do
   begin
     showmessage("Наименование интерфейса: " + String(Table.Table[i].bDescr)); //Наименование интерфейса
     showmessage("MAC: " + GetMAC(TMAC(Table.Table[i].bPhysAddr),Table.Table[i].dwPhysAddrLen)); //MAC
   end;
 end;
 FreeLibrary(FLibHandle);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 GetAllMAC(Sender);
end;

end.



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

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

Наверх




Память: 0.48 MB
Время: 0.053 c
4-1147929968
vodvorezlaya
2006-05-18 09:26
2006.09.17
Помогите разобраться с COM портом


2-1156899612
Gremlin
2006-08-30 05:00
2006.09.17
Ассоциация с уже зарегистрированным расширением


8-1141657165
denis24
2006-03-06 17:59
2006.09.17
Изменение разрешение картинки


2-1156446999
GunGarry
2006-08-24 23:16
2006.09.17
ListBox


2-1156423809
H!TM@N
2006-08-24 16:50
2006.09.17
Поиск файлов