با سلام من کد اش را پیدا کردم ولی طریقه استفاده کردن را بلد نیستم لطفا راهنمایی کنید.
کد:
uses ComObj, ActiveX, UrlMon;
// ======================================================================
// SetIpConfig()
// Set IPAddress, Gateway and Subnetmask via WMI
// Arguments ...
// AIpAddress - If Null String or 'DHCP' then DHCP is ENABLED
// else STATIC IP is set.
// AGateWay - [Optional] If Omitted then GATEWAY is left unchanged.
// SubnetMask - [Optional] If Omited then default = '255.255.255.0'.
//
// SetDnsServers()
// Set DNS Servers via WMI
// Arguments ...
// APrimaryDNS - If Null String then DNS Server List is CLEARED.
// AAlternateDNS - [Optional]
//
// Return Values ...
// 0 Successful completion, no reboot required.
// 1 Successful completion, reboot required.
// -1 Unknown OLE Error
// 64 Method not supported on this platform.
// 65 Unknown failure.
// 66 Invalid subnet mask.
// 67 An error occurred while processing an instance that was returned.
// 68 Invalid input parameter.
// 69 More than five gateways specified.
// 70 Invalid IP address.
// 71 Invalid gateway IP address.
// 72 An error occurred while accessing the registry for the info.
// 73 Invalid domain name.
// 74 Invalid host name.
// 75 No primary or secondary WINS server defined.
// 76 Invalid file.
// 77 Invalid system path.
// 78 File copy failed.
// 79 Invalid security parameter.
// 80 Unable to configure TCP/IP service.
// 81 Unable to configure DHCP service.
// 82 Unable to renew DHCP lease.
// 83 Unable to release DHCP lease.
// 84 IP not enabled on adapter.
// 85 IPX not enabled on adapter.
// 86 Frame/network number bounds error.
// 87 Invalid frame type.
// 88 Invalid network number.
// 89 Duplicate network number.
// 90 Parameter out of bounds.
// 91 Access denied.
// 92 Out of memory.
// 93 Already exists.
// 94 Path, file, or object not found.
// 95 Unable to notify service.
// 96 Unable to notify DNS service.
// 97 Interface not configurable.
// 98 Not all DHCP leases could be released or renewed.
// 100 DHCP not enabled on adapter.
// ======================================================================
// ==================================================================
// IP Address,Gateway and Subnet Mask
// EnableStatic takes array of string as a parameter
// for the Addresses. You may wish to rewrite this using
// array of string as parameter for multiple IP Addresses.
// I only have use for 1 IP address and Gateway in our application
// but it's nice to be able to expand it for other users.
// ==================================================================
function SetIpConfig(const AIpAddress : string;
const AGateWay : string = '';
const ASubnetMask : string = '') : integer;
var Retvar : integer;
oBindObj : IDispatch;
oNetAdapters,oNetAdapter,
oIpAddress,oGateWay,
oWMIService,oSubnetMask : OleVariant;
i,iValue : longword;
oEnum : IEnumvariant;
oCtx : IBindCtx;
oMk : IMoniker;
sFileObj : widestring;
begin
Retvar := 0;
sFileObj := 'winmgmts:\\.\root\cimv2';
// Create OLE [IN} Parameters
oIpAddress := VarArrayCreate([1,1],varOleStr);
oIpAddress[1] := AIpAddress;
oGateWay := VarArrayCreate([1,1],varOleStr);
oGateWay[1] := AGateWay;
oSubnetMask := VarArrayCreate([1,1],varOleStr);
if ASubnetMask = '' then
oSubnetMask[1] := '255.255.255.0'
else
oSubnetMask[1] := ASubnetMask;
// Connect to WMI - Emulate API GetObject()
OleCheck(CreateBindCtx(0,oCtx));
OleCheck(MkParseDisplayNameEx(oCtx,PWideChar(sFileObj),i,oMk));
OleCheck(oMk.BindToObject(oCtx,nil,IUnknown,oBindObj));
oWMIService := oBindObj;
oNetAdapters := oWMIService.ExecQuery('Select * from ' +
'Win32_NetworkAdapterConfiguration ' +
'where IPEnabled=TRUE');
oEnum := IUnknown(oNetAdapters._NewEnum) as IEnumVariant;
while oEnum.Next(1,oNetAdapter,iValue) = 0 do begin
try
// Set by DHCP ? (Gateway and Subnet ignored)
if (AIpAddress = '') or SameText(AIpAddress,'DHCP') then
Retvar := oNetAdapter.EnableDHCP
// Set via STATIC ?
else begin
Retvar := oNetAdapter.EnableStatic(oIpAddress,oSubnetMask);
// Change Gateway ?
if (Retvar = 0) and (AGateWay <> '') then
Retvar := oNetAdapter.SetGateways(oGateway);
// *** This is where we need some sort of ***
// *** Network Mapped Resource Refresh ***
end;
except
Retvar := -1;
end;
oNetAdapter := Unassigned;
end;
oGateWay := Unassigned;
oSubnetMask := Unassigned;
oIpAddress := Unassigned;
oNetAdapters := Unassigned;
oWMIService := Unassigned;
Result := Retvar;
end;