ورود

View Full Version : سوال: غیرفعال کردن کارت شبکه خاص



Mask
سه شنبه 30 آذر 1389, 20:48 عصر
با سلام
چطوری میتونم لیست کارت شبکه ها رو بدست بیارم و بعد یکیش رو غیرفعال کنم.
ممنون.

Felony
سه شنبه 30 آذر 1389, 21:11 عصر
باید از WMI استفاده کنی و درخواستت رو به کلاس Win32_NetworkAdapter (http://msdn.microsoft.com/en-us/library/aa394216(v=VS.85).aspx) بفرستی ، برای گرفتن لیست کارت ها کدش رو برات نوشتم :


uses
ActiveX,
ComObj;

function VarArrayToStr(const vArray: variant): string;

function _VarToStr(const V: variant): string;
var
Vt: integer;
begin
Vt := VarType(V);
case Vt of
varSmallint,
varInteger : Result := IntToStr(integer(V));
varSingle,
varDouble,
varCurrency : Result := FloatToStr(Double(V));
varDate : Result := VarToStr(V);
varOleStr : Result := WideString(V);
varBoolean : Result := VarToStr(V);
varVariant : Result := VarToStr(Variant(V));
varByte : Result := char(byte(V));
varString : Result := String(V);
varArray : Result := VarArrayToStr(Variant(V));
end;
end;

var
i : integer;
begin
Result := '[';
if (VarType(vArray) and VarArray)=0 then
Result := _VarToStr(vArray)
else
for i := VarArrayLowBound(vArray, 1) to VarArrayHighBound(vArray, 1) do
if i=VarArrayLowBound(vArray, 1) then
Result := Result+_VarToStr(vArray[i])
else
Result := Result+'|'+_VarToStr(vArray[i]);

Result:=Result+']';
end;

function VarStrNull(const V:OleVariant):string; //avoid problems with null strings
begin
Result:='';
if not VarIsNull(V) then
begin
if VarIsArray(V) then
Result:=VarArrayToStr(V)
else
Result:=VarToStr(V);
end;
end;


function GetWMIObject(const objectName: String): IDispatch; //create the Wmi instance
var
chEaten: Integer;
BindCtx: IBindCtx;
Moniker: IMoniker;
begin
OleCheck(CreateBindCtx(0, bindCtx));
OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker));
OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
end;

procedure NetworkDevice(const List: TStrings);
var
objWMIService : OLEVariant;
colItems : OLEVariant;
colItem : OLEVariant;
oEnum : IEnumvariant;
iValue : LongWord;
begin;
objWMIService := GetWMIObject('winmgmts:\\localhost\root\CIMV2');
colItems := objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter','WQL',0);
oEnum := IUnknown(colItems._NewEnum) as IEnumVariant;
while oEnum.Next(1, colItem, iValue) = 0 do
begin
if colItem.Name<>'' then
List.Add(VarStrNull(colItem.Name));// String
end;
end;
استفاده :

NetworkDevice(Memo1.Lines);

تو همون لینک هم متد Enable و Disable توضیح داده شده .