![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определение сетевой карты
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)