Главная страница
    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.038 c
2-1156749072
shake
2006-08-28 11:11
2006.09.17
выборка из dbgrid


2-1156831216
4EPEII
2006-08-29 10:00
2006.09.17
Условие ключа реестра


2-1156520417
NAS
2006-08-25 19:40
2006.09.17
Даты


15-1156734742
tButton
2006-08-28 07:12
2006.09.17
знаки


15-1156810340
бегинка
2006-08-29 04:12
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский