Delphirus - прграммирование на delphi
   Все о delphi Delphirus - прграммирование на delphi
blocks.gif
Навигация
 

Главная
Статьи
Базы данных
Графика
Защита
Интернет
Система
Тексты
Мультимедиа
Файлы
Формы и окна
Другое
Советы
Базы данных
Графика
Интернет
Мультимедиа
Система
Тексты
Файлы
Файлы
Исходники
Компоненты
Инфо
Поиск по сайту
Обратная связь
Самое популярное
Аккаунт
Карта сайта

 
 
 

Советы по delphi \ Интернет и сети \ Сеть \ Извлечь адреса сетевых карт

Извлечь адреса сетевых карт

{for NT4 and Windows 2000, and you must have Admin privileges}
 {fьr NT4 und Windows 2000, und Adminrechte erforderlich}

 uses
  Registry;

 const
   nString = 'SOFTWAREMICROSOFTWINDOWS NTCURRENTVERSIONNetworkCards';
   nEthernet = 'Ethernet';
   nEtherjet = 'Etherjet'; {if Hardware IBM PL300 with Chip 10/100}
   nTcpIp1 = 'SYSTEMCurrentControlSetServices';
   nTcpIp2 = 'ParametersTcpip';

 var
   reg: TRegistry;
   buffer1, buffer2, buffer3: array [1..32] of Char;
   i: Integer;
   ipaddress, subnetmask, DefaultGateway: string;
   Adapter, Adapter_Key: string;
   stringlist: TStrings;

 function search_adapter_key: string;
 var
   astring, description, st: string;
   nPos: integer;
   ServiceName: string;
 begin
   reg := TRegistry.Create;
   stringlist  := TStringList.Create;
   reg.RootKey := HKEY_LOCAL_MACHINE;
   reg.OpenKey(nString, False);
   reg.GetKeyNames(stringlist);    {search all subkeys 
                                   such alle unterschlьssel}
   reg.CloseKey;

   for i := 0 to (stringlist.Count - 1) do
   begin
     st := stringlist[i];
     aString := nString + '' + st;
     reg := TRegistry.Create;
     reg.RootKey := HKEY_LOCAL_MACHINE;
     reg.OpenKey(aString, False);
     description := reg.ReadString('Description');
     nPos:= AnsiPos(nEthernet, description); {search description for string Ethernet 
                                             Beschreibung nach dem string Ethernet absuchen}
     if nPos > 0 then
     begin
       ServiceName := reg.ReadString('ServiceName');
       Adapter_Key := nTcpIp1 + ServiceName + nTcpIp2;
     end;
     nPos := AnsiPos(nEtherjet, description); {search description for string 'Etherjet 
                                              if IBM PL300 with MotherboardChip}
     if nPos > 0 then
     begin
       ServiceName := reg.ReadString('ServiceName');
       Adapter_Key := nTcpIp1 + ServiceName + nTcpIp2;
     end;

     reg.CloseKey;
   end;
   Result := Adapter_Key;
 end;

 procedure search_for_adapter_NT;
 var
   BufSize: Integer;    {Bufsize requested but not used 
                        Bufsize erforderlich aber nicht benutzt}
 begin
   adapter := search_adapter_key;
   if adapter <> '' then
   begin
     Reg := TRegistry.Create;
     try
       Reg.RootKey := HKEY_LOCAL_MACHINE;
       Reg.OpenKey(adapter, False);
       Reg.ReadBinaryData('IpAddress', buffer1, BufSize);
     finally
       Reg.CloseKey;
       Reg.Free;
     end;

     Reg := TRegistry.Create;
     try
       Reg.RootKey := HKEY_LOCAL_MACHINE;
       Reg.OpenKey(adapter, False);
       Reg.ReadBinaryData('SubnetMask', buffer2, BufSize);
     finally
       Reg.CloseKey;
       Reg.Free;
     end;

     Reg := TRegistry.Create;
     try
       Reg.RootKey := HKEY_LOCAL_MACHINE;
       Reg.OpenKey(adapter, False);
       Reg.ReadBinaryData('DefaultGateway', buffer3, BufSize);
     finally
       Reg.CloseKey;
       Reg.Free;
     end;
   end;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   Memo1.Clear;
   search_for_adapter_NT;
   Memo1.Lines.Add(buffer1);
   Memo1.Lines.Add(buffer2);
   Memo1.Lines.Add(buffer3);
 end;

Название: Извлечь адреса сетевых карт
Дата публикации: 2004-09-03 (2845 Прочтено)

 
 

 

Page generation 0.054 seconds