Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Como usar esta funçao


FodasticC

Question

Bom pessoal estou tentando usar o comando

WinExec('cmd.exe /c netsh interface ip set address name=“conexaolocal” static 10.76.1.54 255.255.255.0 10.76.1.1 1',SW_normal);

ele até roda mais não faz efeito nenhum. já troquei o nome da conexao local e tudo e nada funciona,se eu tento pelo netsh.exe direto ,funciona normal.

estou precisando disto pois no meu trabalho preciso toda hora trocar o ip pois entro na velox e na rede interna e para acessar a velox eu preciso por o ip ,e quero simplificar isso pra deixar só no click do programa fazer automatico. o sistema operacional é win7 e D7.

andei pesquisando e achei este exemplo mais não sei como por a funcionar, parece que precisa da wmi library eu procurei mais não acho para download.ai tem que usar o Win32_NetworkAdapterConfiguration para por o EnableStatic method.

function ArrayToVarArray(Arr : Array Of string):OleVariant; overload;

var

i : integer;

begin

Result :=VarArrayCreate([0, High(Arr)], varVariant);

for i:=Low(Arr) to High(Arr) do

Result:=Arr;

end;

function ArrayToVarArray(Arr : Array Of Word):OleVariant;overload;

var

i : integer;

begin

Result :=VarArrayCreate([0, High(Arr)], varVariant);

for i:=Low(Arr) to High(Arr) do

Result:=Arr;

end;

procedure SetStaticIP;

const

wbemFlagForwardOnly = $00000020;

var

FSWbemLocator : OLEVariant;

FWMIService : OLEVariant;

FWbemObjectSet: OLEVariant;

FWbemObject : OLEVariant;

oEnum : IEnumvariant;

iValue : LongWord;

vIPAddress : OleVariant;

vSubnetMask : OleVariant;

vDefaultIPGateway : OleVariant;

vGatewayCostMetric : OleVariant;

begin

FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');

FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');

FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=True','WQL',wbemFlagForwardOnly);

oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;

while oEnum.Next(1, FWbemObject, iValue) = 0 do

begin

vIPAddress := ArrayToVarArray(['192.168.1.141']);

vSubnetMask := ArrayToVarArray(['255.255.255.0']);

if FWbemObject.EnableStatic(vIPAddress, vSubnetMask) = 0 then

begin

vDefaultIPGateway := ArrayToVarArray(['192.168.1.100']);

vGatewayCostMetric := ArrayToVarArray([1]);

FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric);

end;

VarClear(vIPAddress);

VarClear(vSubnetMask);

VarClear(vDefaultIPGateway);

VarClear(vGatewayCostMetric);

FWbemObject:=Unassigned;

end;

end;

Link to comment
Share on other sites

21 answers to this question

Recommended Posts

  • 0

andei pesquisando e achei este exemplo mais não sei como por a funcionar

Não basta somente copiar, tem que entender ... ~veja a correção no código

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses ComObj, ActiveX, StdVcl;  // <<<   faltou 

function ArrayToVarArray(Arr : Array Of string):OleVariant; overload;
var
 i : integer;
begin
   Result   :=VarArrayCreate([0, High(Arr)], varVariant);
   for i:=Low(Arr) to High(Arr) do
   Result[i]:=Arr[i];
end;

function ArrayToVarArray1(Arr : Array Of Word):OleVariant;overload;  // << nome da função
var
 i : integer;
begin
   Result   :=VarArrayCreate([0, High(Arr)], varVariant);
   for i:=Low(Arr) to High(Arr) do
   Result[i]:=Arr[i];
end;

procedure  SetStaticIP;
const
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService   : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject   : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;
  vIPAddress         : OleVariant;
  vSubnetMask        : OleVariant;
  vDefaultIPGateway  : OleVariant;
  vGatewayCostMetric : OleVariant;
begin
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService   := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=True','WQL',wbemFlagForwardOnly);
  oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    vIPAddress   := ArrayToVarArray(['192.168.1.141']);
    vSubnetMask  := ArrayToVarArray(['255.255.255.0']);
    if FWbemObject.EnableStatic(vIPAddress, vSubnetMask) = 0 then
    begin
      vDefaultIPGateway  := ArrayToVarArray(['192.168.1.100']);
      vGatewayCostMetric := ArrayToVarArray1([1]);  //  <<  alterar aqui
      FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric);
    end;
    VarClear(vIPAddress);
    VarClear(vSubnetMask);
    VarClear(vDefaultIPGateway);
    VarClear(vGatewayCostMetric);
    FWbemObject:=Unassigned;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   SetStaticIP;
end;

end.

abraço

Link to comment
Share on other sites

  • 0

obrigado pela ajuda amigo,consegui da forma que você explicou, agora estou fazendo pra por em DCHP + da este erro: [Error] Unit1.pas(12): Unsatisfied forward or external declaration: 'TForm1.Button1Click'..

como ficou:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

uses ComObj, ActiveX, StdVcl; // <<< faltou

function ArrayToVarArray(Arr : Array Of string):OleVariant; overload;

var

i : integer;

begin

Result :

=VarArrayCreate([0, High(Arr)], varVariant);

for i:=Low(Arr) to High(Arr) do

Result:=Arr;

end;

function ArrayToVarArray1(Arr : Array Of Word):OleVariant;overload; // << nome da função

var

i : integer;

begin

Result :=VarArrayCreate([0, High(Arr)], varVariant);

for i:=Low(Arr) to High(Arr) do

Result:=Arr;

end;

procedure SetStaticIP;

const

wbemFlagForwardOnly = $00000020;

var

FSWbemLocator : OLEVariant;

FWMIService : OLEVariant;

FWbemObjectSet: OLEVariant;

FWbemObject : OLEVariant;

oEnum : IEnumvariant;

iValue : LongWord;

begin

FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');

FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');

FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=True','WQL',wbemFlagForwardOnly);

oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;

while oEnum.Next(1, FWbemObject, iValue) = 0 do

begin

FWbemObject.EnableDHCP();

FWbemObject:=Unassigned;

end;

end;

end.

outra duvida, estou tentando por 1 caixa de edit pra mim digitar o ip em vez de por o ip direto.exemplo :

vIPAddress := ArrayToVarArray(['192.168.1.141]); em vez de deixar esse ip pra sempre, colocar a caixa e deixar que eu ou alguém digite o ip que quiser.

Edited by FodasticC
Link to comment
Share on other sites

  • 0

não testei, mas tente ai

if FWbemObject.EnableStatic(vIPAddress, vSubnetMask) = 0 then
    begin
      vDefaultIPGateway  := ArrayToVarArray(['192.168.1.100']);
      vGatewayCostMetric := ArrayToVarArray1([1]);
      FWbemObject.ReleaseDHCPLease();
      FWbemObject.EnableDHCP();
      FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric);
    end;

abraço

Link to comment
Share on other sites

  • 0

muito obrigado amigo, você é fera d+ só falta isto, ArrayToVarArray(['192.168.1.141']); em vez de deixar esse ip pra sempre, colocar a caixa de texto e deixar que eu ou alguém digite o ip que quiser.

se quiser pode me dar só dicas para eu pesquisar e fazer.

achei esta funçao:

procedure TForm1.Edit1Change(Sender: TObject);

var

Editt:string;

begin

Editt := edit1.text;

end;

end.

diz que o que foi colocado na caixa de texto vai para onde estiver escrito Editt. mais não funciona até compila sem erros mais não muda em nada.

ai eu tentei por

vIPAddress := ArrayToVarArray(['Editt]);

e esta função mais não adiantou

Edited by FodasticC
Link to comment
Share on other sites

  • 0

tente assim

procedure  SetStaticIP;
const
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService   : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject   : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;
  vIPAddress         : OleVariant;
  vSubnetMask        : OleVariant;
  vDefaultIPGateway  : OleVariant;
  vGatewayCostMetric : OleVariant;
begin
  //Edit1.Text := '192.168.1.141'
  //Edit2.Text := '192.168.1.100'

  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService   := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=True','WQL',wbemFlagForwardOnly);
  oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    vIPAddress   := ArrayToVarArray(['+Edit1.Text+']);
    vSubnetMask  := ArrayToVarArray(['255.255.255.0']);
    if FWbemObject.EnableStatic(vIPAddress, vSubnetMask) = 0 then
    begin
      vDefaultIPGateway  := ArrayToVarArray(['+Edit2.Text+']);
      vGatewayCostMetric := ArrayToVarArray1([1]);  //  <<  alterar aqui
      FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric);
    end;
    VarClear(vIPAddress);
    VarClear(vSubnetMask);
    VarClear(vDefaultIPGateway);
    VarClear(vGatewayCostMetric);
    FWbemObject:=Unassigned;
  end;
end;

abraço

Link to comment
Share on other sites

  • 0

voce vai colocar no form 2 edits ( Edit1.text e Edit2.Text )

em cada um deles voce vai digitar o ip que voce quiser

exemplo:

Edit1.Text := '192.168.1.141';

Edit2.Text := '192.168.1.100';

ao clicar no botão os valores serão passados por referencia a função ... entendeu ?

abraço

Link to comment
Share on other sites

  • 0

achei que voce iria saber como alterar, mas de qualquer modo eis a correção

unit UIP;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses ComObj, ActiveX, StdVcl;  // <<<   faltou

function ArrayToVarArray(Arr : Array Of string):OleVariant; overload;
var
i : integer;
begin
   Result   :=VarArrayCreate([0, High(Arr)], varVariant);
   for i:=Low(Arr) to High(Arr) do
   Result[i]:=Arr[i];
end;

procedure  SetStaticIP;
const
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService   : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject   : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;
  vIPAddress         : OleVariant;
  vSubnetMask        : OleVariant;
  vDefaultIPGateway  : OleVariant;
  vGatewayCostMetric : OleVariant;
begin
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService   := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=True','WQL',wbemFlagForwardOnly);
  oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    vIPAddress   := ArrayToVarArray([Form1.Edit1.Text]); // <<<<<<<<<<<<<
    vSubnetMask  := ArrayToVarArray(['255.255.255.0']);
    if FWbemObject.EnableStatic(vIPAddress, vSubnetMask) = 0 then
    begin
      vDefaultIPGateway  := ArrayToVarArray([Form1.Edit2.Text]);  //  <<<<<<<<<<<<
      vGatewayCostMetric := ArrayToVarArray(['1']);  //  <<  alterar aqui
      FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric);
    end;
    VarClear(vIPAddress);
    VarClear(vSubnetMask);
    VarClear(vDefaultIPGateway);
    VarClear(vGatewayCostMetric);
    FWbemObject:=Unassigned;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   SetStaticIP;
end;

end.

OBS: Veja que eu tirei uma das function para que não ocorrece o erro de tipos não correpondentes nessa lina

FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric);

abraço

Link to comment
Share on other sites

  • 0

obrigado amigao, você é fera. funcionou legal. só falta o DNS, ve onde estou errando, estou colocando assim

procedure SetStaticIP;

const

wbemFlagForwardOnly = $00000020;

var

FSWbemLocator : OLEVariant;

FWMIService : OLEVariant;

FWbemObjectSet: OLEVariant;

FWbemObject : OLEVariant;

oEnum : IEnumvariant;

iValue : LongWord;

vIPAddress : OleVariant;

vDNSAddress : OleVariant;

vSubnetMask : OleVariant;

vDefaultIPGateway : OleVariant;

vGatewayCostMetric : OleVariant;

begin

FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');

FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');

FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=True','WQL',wbemFlagForwardOnly);

oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;

while oEnum.Next(1, FWbemObject, iValue) = 0 do

begin

vIPAddress := ArrayToVarArray([Form1.Edit1.Text]); // <<<<<<<<<<<<<

vSubnetMask := ArrayToVarArray(['255.255.255.0']);

vDNSAddress := ArrayToVarArray(['192.168.20.5']);

if FWbemObject.EnableStatic(vIPAddress, vSubnetMask,vDNSAddress) = 0 then

begin

vDefaultIPGateway := ArrayToVarArray([Form1.Edit2.Text]); // <<<<<<<<<<<<

vGatewayCostMetric := ArrayToVarArray(['1']); // << alterar aqui

FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric);

end;

VarClear(vIPAddress);

VarClear(vDNSAddress);

VarClear(vSubnetMask);

VarClear(vDefaultIPGateway);

VarClear(vGatewayCostMetric);

FWbemObject:=Unassigned;

end;

end;

outra pergunta, como você sabia que tinha um Tbuton ao ver a funçao

function ArrayToVarArray(Arr : Array Of string):OleVariant; overload;

var

i : integer;

begin

Result :=VarArrayCreate([0, High(Arr)], varVariant);

for i:=Low(Arr) to High(Arr) do

Result:=Arr;

end;

function ArrayToVarArray(Arr : Array Of Word):OleVariant;overload;

var

i : integer;

begin

Result :=VarArrayCreate([0, High(Arr)], varVariant);

for i:=Low(Arr) to High(Arr) do

Result:=Arr;

end;

procedure SetStaticIP;

const

wbemFlagForwardOnly = $00000020;

var

FSWbemLocator : OLEVariant;

FWMIService : OLEVariant;

FWbemObjectSet: OLEVariant;

FWbemObject : OLEVariant;

oEnum : IEnumvariant;

iValue : LongWord;

vIPAddress : OleVariant;

vSubnetMask : OleVariant;

vDefaultIPGateway : OleVariant;

vGatewayCostMetric : OleVariant;

begin

FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');

FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');

FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=True','WQL',wbemFlagForwardOnly);

oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;

while oEnum.Next(1, FWbemObject, iValue) = 0 do

begin

vIPAddress := ArrayToVarArray(['192.168.1.141]);

vSubnetMask := ArrayToVarArray(['255.255.255.0']);

if FWbemObject.EnableStatic(vIPAddress, vSubnetMask) = 0 then

begin

vDefaultIPGateway := ArrayToVarArray(['192.168.1.100']);

vGatewayCostMetric := ArrayToVarArray([1]);

FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric);

end;

VarClear(vIPAddress);

VarClear(vSubnetMask);

VarClear(vDefaultIPGateway);

VarClear(vGatewayCostMetric);

FWbemObject:=Unassigned;

end;

end;

Link to comment
Share on other sites

  • 0

outra pergunta, como você sabia que tinha um Tbuton ao ver a funçao

veja o que voce escreveu

andei pesquisando e achei este exemplo mais não sei como por a funcionar
então, obviamente voce não pesquisou corretamente, pois veria que faltou a chamada da função

procedure TForm1.Button1Click(Sender: TObject);
begin
   SetStaticIP;
end;

só falta o DNS, ve onde estou errando

qual é o comando que salva os valores ???

FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric);

pesquise um pouquinho mais e descrobrirá

abraço

Link to comment
Share on other sites

  • 0

não funciona, onde estou errando ?

var

FSWbemLocator : OLEVariant;

FWMIService : OLEVariant;

FWbemObjectSet: OLEVariant;

FWbemObject : OLEVariant;

oEnum : IEnumvariant;

iValue : LongWord;

vIPAddress : OleVariant;

vSubnetMask : OleVariant;

vDefaultIPGateway : OleVariant;

vGatewayCostMetric : OleVariant;

vDNSPrim : OleVariant;

begin

FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');

FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');

FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=True','WQL',wbemFlagForwardOnly);

oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;

while oEnum.Next(1, FWbemObject, iValue) = 0 do

begin

vIPAddress := ArrayToVarArray([Form1.Edit1.Text]); // <<<<<<<<<<<<<

vSubnetMask := ArrayToVarArray(['255.255.255.0']);

if FWbemObject.EnableStatic(vIPAddress, vSubnetMask, ) = 0 then

begin

vDefaultIPGateway := ArrayToVarArray(['Form1.Edit2.Text']); // <<<<<<<<<<<<

vGatewayCostMetric := ArrayToVarArray(['1']); // << alterar aqui

vDNSPrim := ArrayToVarArray(['192.168.20.5']);

FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric,vDNSPrim);

end;

VarClear(vIPAddress);

VarClear(vSubnetMask);

VarClear(vDefaultIPGateway);

VarClear(vGatewayCostMetric);

VarClear(vDNSPrim);

FWbemObject:=Unassigned;

o dns não muda de jeito nenhum.

Link to comment
Share on other sites

  • 0

Writeln(Format('DNSPrim %s',[FWbemObject.DNSPrim]));// String

Writeln(Format('DNSSec %s',[FWbemObject.DNSSec]));// String

refere-se ao DNS primario e ao DNS secundario

OBS: voce precisa entender o código

abraço

Link to comment
Share on other sites

  • 0

tentei assim e outras formas + dá o seguinte erro: DNSprim not supported by automation object

begin

vIPAddress := ArrayToVarArray([Form1.Edit1.Text]); // <<<<<<<<<<<<<

vSubnetMask := ArrayToVarArray(['255.255.255.0']);

if FWbemObject.EnableStatic(vIPAddress, vSubnetMask, ) = 0 then

begin

vDefaultIPGateway := ArrayToVarArray(['Form1.Edit2.Text']); // <<<<<<<<<<<<

vGatewayCostMetric := ArrayToVarArray(['1']); // << alterar aqui

FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric);

begin

vDNSprim := ArrayToVarArray(['192.168.20.5']);

FWbemObject.DNSPrim (vDNSPrim);

end;

Edited by FodasticC
Link to comment
Share on other sites

  • 0

amigo, parece que voce tem dificuldades com o ingles ... certo ? então procure usar o tradutor do Google para poder entender do que se trata

no link tem varios exemplos e um deles é:

Para obter Configurações do adaptador WiFi TcpIp (IPv4) usar a classe WiFi_AdapterTcpIpSettings

procedure  GetWiFi_AdapterTcpIpSettingsInfo;  

02 const 
03   WbemUser            ='';  
04   WbemPassword        ='';  
05   WbemComputer        ='localhost';  
06   wbemFlagForwardOnly = $00000020;  
07 var 
08   FSWbemLocator : OLEVariant;  
09   FWMIService   : OLEVariant;  
10   FWbemObjectSet: OLEVariant;  
11   FWbemObject   : OLEVariant;  
12   oEnum         : IEnumvariant;  
13   iValue        : LongWord;  
14 begin;  
15   FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');  
16   FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);  
17   FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM iFi_AdapterTcpIpSettings','WQL',wbemFlagForwardOnly);  
18   oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;  
19   while oEnum.Next(1, FWbemObject, iValue) = 0 do 
20   begin 
21     Writeln(Format('Caption           %s',[FWbemObject.Caption]));// String  
22     Writeln(Format('DefaultGateway    %s',[FWbemObject.DefaultGateway]));// String  
23     Writeln(Format('Description       %s',[FWbemObject.Description]));// String  
24     Writeln(Format('DHCP_IP           %s',[FWbemObject.DHCP_IP]));// Boolean  
25     Writeln(Format('DHCP_WINS         %s',[FWbemObject.DHCP_WINS]));// Boolean  
26     Writeln(Format('DhcpServer        %s',[FWbemObject.DhcpServer]));// String  
27     Writeln(Format('DhcpSubnetMask    %s',[FWbemObject.DhcpSubnetMask]));// String  
28     Writeln(Format('DNS               %s',[FWbemObject.DNS]));// Boolean  
29     Writeln(Format('DNSPrim           %s',[FWbemObject.DNSPrim]));// String  
30     Writeln(Format('DNSSec            %s',[FWbemObject.DNSSec]));// String  
31     Writeln(Format('Domain            %s',[FWbemObject.Domain]));// String  
32     Writeln(Format('IPAddress         %s',[FWbemObject.IPAddress]));// String  
33     Writeln(Format('ScopeID           %s',[FWbemObject.ScopeID]));// String  
34     Writeln(Format('SettingID         %s',[FWbemObject.SettingID]));// String  
35     Writeln(Format('WINSPrim          %s',[FWbemObject.WINSPrim]));// String  
36     Writeln(Format('WINSSec           %s',[FWbemObject.WINSSec]));// String  
37     FWbemObject:=Unassigned;  
38   end;  

39 end;

OBS: Mudar o DNS requer mudança no registry do windows

abraço

Link to comment
Share on other sites

  • 0

me sinto até envergonhado de voltar dizendo que não consegui,tentei de varias formas,compila mais não troca o dns, os outros mudam normal.estou desde a hora que você postou esses ultimos 2 topicos, e nada. tentei só com esta funçao que esta funçao:

uses Registry;

procedure

SaveStringToRegistry_LOCAL_MACHINE(

sKey, sItem, sVal : string );

var

reg : TRegIniFile;

begin

reg := TRegIniFile.Create( '' );

reg.RootKey := HKEY_LOCAL_MACHINE;

reg.WriteString(

sKey, sItem, sVal + #0 );

reg.Free;

end;

procedure

SetTCPIPDNSAddresses(

sIPs : string );

begin

//

// if using Windows NT

//

SaveStringToRegistry_LOCAL_MACHINE(

'SYSTEMCurrentControlSet' +

'ServicesTcpipParameters',

'NameServer',

sIPs );

end;

e nada. é ruim d+ quando fica tentando e não consegue rsrs.

Link to comment
Share on other sites

  • 0

fecho com 10 jhonas,muito obrigado amigão, antes não estava mudando por que não estava executando como adiministrador rsrs. ai estou usando

WinExec('cmd /c netsh interface ip set dns "Conexão local" static 10.0.0.1', 0); pra mudar ficou show de bola vlws mesmo

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...