Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.062 c
15-1156829879
Slider007
2006-08-29 09:37
2006.09.17
Text Image


15-1156340251
lorn
2006-08-23 17:37
2006.09.17
D2006 ->crystal report


4-1147926765
apl
2006-05-18 08:32
2006.09.17
Как преобразовать TFileTime


6-1146238121
NORDmen
2006-04-28 19:28
2006.09.17
winsock - recv


15-1155678234
Караед
2006-08-16 01:43
2006.09.17
Домофон!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский