Dicas - Mudando o IP e DNS do windows em RunTime
Neste artigo veremos como utilizar o Delphi para alterar IP e DNS do Windows em tempo de execução.
O problema: mudar o endereço IP de uma placa de rede sem reiniciar o PC. Para isso utilize a Listagem 1.
1 function CriaProcesso(comando: string):integer;
2 var
3 zAppName: array[0..512] of char;
4 zCurDir: array[0..255] of char;
5 WorkDir: string;
6 StartupInfo: TStartupInfo;
7 ProcessInfo: TProcessInformation;
8 Resultado: DWord;
9 begin
10 StrPCopy(zAppName, comando);
11 GetDir(0, WorkDir);
12 StrPCopy(zCurDir, WorkDir);
13 FillChar(StartupInfo, Sizeof(StartupInfo), #0);
14 StartupInfo.cb := Sizeof(StartupInfo);
15 StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
16 StartupInfo.wShowWindow := sw_hide;
17
18 if not CreateProcess(nil, zAppName, nil, nil, false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
19 Result := -1 { ponteiro para o PROCESS_INF }
20 else
21 begin
22 WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
23 GetExitCodeProcess(ProcessInfo.hProcess,Resultado);
24 Result := Resultado;
25 end;
26 end;
27
28 function DefinirIP(NomeConexao, Ip, Netmask, Gateway: string):boolean;
29 begin
30 Result:=( CriaProcesso(Format('netsh int ip set address name="%s"
source=static %s %s %s 1',[ NomeConexao, Ip, NetMask, Gateway]))=0 );
31 end;
32
33
34 function FixarDNS(NomeConexao: String; ipDNS: string): boolean;
35 begin
36 Result:=( CriaProcesso(Format('netsh int ip set dns "%s" static %s',
[NomeConexao, ipDNS]))=0 );
37 end;
38
39 procedure TForm1.Button1Click(Sender: TObject);
40 begin
41 if NOT DefinirIP( 'Conexão de Rede sem Fio', '192.168.25.126', '255.255.255.0',
'192.168.25.1') then
42 ShowMessage('Erro na alteração do IP')
43 else
44 ShowMessage('IP alterado sem erros');
45 end;
46
47 procedure TForm1.Button2Click(Sender: TObject);
48 begin
49 if NOT FixarDNS( 'Conexão de Rede sem Fio', '192.168.25.1') then
50 ShowMessage('Erro na Fixação do DNS')
51 else
52 ShowMessage('DNS alterado sem erros');
53 end;
Listagem 1. Exemplo de uso de Unicode String em showmessages
- Linha 1 à 26: Método para criar um processo do Windows e executar comandos através de Strings, similar ao que se faz no Prompt do DOS.
- Linha 28 e 31: Método que monta uma String para definir o IP do Windows:
- Parâmetro 1: Nome do adaptador de Rede definido no Windows;
- Parâmetro 2: IP que será definido;
- Parâmetro 3: Máscara da rede;
- Parâmetro 4: Número do Gateway que será definido para o adaptador;
- Linha 34 à 37: Método que monta uma String para definir um DNS:
- Parâmetro 1: Nome do adaptador de Rede definido no Windows;
- Parâmetro 2: Valor do DNS;
- Linha 39 a 45: Implementação do Evento OnClick do Button1 chamando o método DefinirIP passando os valores de exemplo;
- Linha 47 a 53: Implementação do Evento OnClick do Button2 chamando o método FixarDNS passando os valores de exemplo.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo