Форум: "Сети";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Внизполучение 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c