Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определение сетевой карты


Kross ©   (2004-10-19 16:50:00) 

Подскажите возможно ли по сети определить какая сетвая карта стоит на компьютере? Если да то подскажите как?


Дмитрий Ботвин   (2004-10-20 15:14:00) [1]

Smithson а как это через mac??? Можешь сорец набросать?? Или
хотя бы алгоритм....


Smithson   (2004-10-20 15:07:00) [2]

Можно еще так же, если известен mac. Для большинства солидных производителей выделены пулы mac-адресов. Хотя есть и исключения.


Дмитрий Ботвин   (2004-10-20 11:01:00) [3]

Вот примерный код:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics,
 Controls, Forms, Dialogs,ActiveX, WbemScripting_TLB,
 StdCtrls, ComCtrls, ExtCtrls ;

function ADsEnumerateNext(pEnumVariant: IEnumVARIANT;
 cElements: ULONG; var pvar: OleVARIANT;
 var pcElementsFetched: ULONG): HRESULT; safecall;
 external 'activeds.dll';

type
 TForm1 = class(TForm)
   Memo1: TMemo;
   Button1: TButton;
   Edit1: TEdit;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   procedure GetInfo(CompName: String);
 end;

var
 Form1: TForm1;

implementation

procedure DumpWMI_Process(Process: SWBemObject;Memo:TMemo);
var
 Enum: IEnumVARIANT;
 varArr: OleVariant;
 lNumElements: ULong;
 SProp: ISWbemProperty;
 Prop: OleVariant;
 PropName: string;
 PropValue: string;
begin
 Memo.Lines.Add('+ WMI Path: ' + Process.Path_.Path);
 Enum := Process.Properties_._NewEnum as IEnumVariant;
 while (Succeeded(ADsEnumerateNext(Enum, 1, VarArr, lNumElements))) and (lNumElements > 0) do
 begin
   if Succeeded(IDispatch(varArr).QueryInterface(SWBemProperty, SProp)) and Assigned(SProp) then
   begin
     PropName  := SProp.Name;
     Prop := SProp.Get_Value;
     if VarTypeAsText(VarType(Prop))='Array Variant' then PropValue := ''
     else PropValue :=VarToStr(Prop);
     Memo.Lines.Add(PropName + ' = ' + PropValue);
   end;
 end;
end;

{$R *.dfm}

procedure TForm1.GetInfo(CompName: String);
var
 Enum: IEnumVARIANT;
 varArr: OleVariant;
 lNumElements: ULong;
 AName: array[0..255] of Char;
 ASize: DWORD;
begin
 Memo1.Lines.Clear;
 try
   Memo1.Lines.BeginUpdate;
   Enum := CoSWbemLocator.Create.ConnectServer
  (CompName, 'root\cimv2', '', '', '', '', 0, nil).ExecQuery
  ('Select * from '+'WIN32_NetworkAdapter', 'WQL',
  wbemFlagBidirectional, nil)._NewEnum as IEnumVariant;
  while (Succeeded(ADsEnumerateNext(Enum, 1, varArr,
  lNumElements))) and (lNumElements > 0) do
     begin
       DumpWMI_Process(IUnknown(varArr) as SWBemObject,Memo1);
     end;
 finally
   Memo1.Lines.EndUpdate;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 GetInfo(Trim(Edit1.Text));
end;

end.


Дмитрий Ботвин   (2004-10-20 10:44:00) [4]

Verg, а разве GetAdaptersInfo показывает инфу по сетевому
адаптеру удаленного компа???


Verg   (2004-10-19 22:53:00) [5]

GetAdaptersInfo ф-ция из iphlpapi.dll


Дмитрий Ботвин   (2004-10-19 17:58:00) [6]

Можно через WMI. Класс WIN32_NetworkAdapter


Jeer   (2004-10-19 16:59:00) [7]

Можно ли по тлф. разговору с лицом из Нью-Васюков определить номиналы монет в евойном кармане ?
Если Лицо откликается на команды - то можно. (SNMP, а также надстройки над ним)
Если рядом с Лицом находится Доверенное Лицо, то - тоже можно.(Client/Server)


Наверх

Титульная страница Поиск, карта сайта Написать письмо