none
nslookup = consultar texto inserido no textbox RRS feed

  • Pergunta

  • Boa tarde,
    Sou novo na programação C# e estou enfrentando dificuldade em achar como solucionar o problema na minha consulta. Criei um programa para testar DNS, porem não consigo encontrar a forma de mandar consultar o que escrevi no textbox1 + MeuDNS. Poderiam ajudar? 

    Grato!

    EX:

            private void button1_Click(object sender, EventArgs e)
            {

                 Process test1 = new Process();
                 test1.StartInfo.FileName = "nslookup";
                 test1.StartInfo.UseShellExecute = false;
                 test1.StartInfo.Arguments =  textBox1.Text + Meu_DNS;
                 test1.StartInfo.RedirectStandardOutput = true;
                 test1.StartInfo.CreateNoWindow = true;
                 test1.Start();
                 textBox2.Text = test1.StandardOutput.ReadToEnd();

     
    segunda-feira, 31 de outubro de 2016 18:42

Respostas

  • Olá Mário,

    Acredito que seu código está correto, falta apenas um detalhe, na verdade um espaço entre os comandos do textbox e do seu DNS. Segue:

            private void button1_Click(object sender, EventArgs e)
            {
                 Process test1 = new Process();
                 test1.StartInfo.FileName = "nslookup";
                 test1.StartInfo.UseShellExecute = false;
                 test1.StartInfo.Arguments =  textBox1.Text + " " + Meu_DNS;
                 test1.StartInfo.RedirectStandardOutput = true;
                 test1.StartInfo.CreateNoWindow = true;
                 test1.Start();
                 textBox2.Text = test1.StandardOutput.ReadToEnd();
            }

    Estou assumindo MEU_DNS tem o valor do seu DNS mesmo.

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Sugerido como Resposta André SeccoMVP terça-feira, 1 de novembro de 2016 10:03
    • Marcado como Resposta Mário Rodeghiero terça-feira, 1 de novembro de 2016 10:54
    segunda-feira, 31 de outubro de 2016 18:50
  • Mário,

    É que o Arguments recebe uma string, então o 8.8.8.8 tem que estar dentro das aspas, dessa forma:

    test1.StartInfo.Arguments =  textBox1.Text + " 8.8.8.8";


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    segunda-feira, 31 de outubro de 2016 19:20
  • Mário,

    Se entendi bem você quer pegar o valor "Text" da CheckBox que estiver selecionada e já jogar ele como parte do argumento para executar o nslookup, correto?

    Pois bem, não tem como fazer isso da maneira que postou. Ia ter que verificar cada CheckBox e depois se estivesse marcado, pegar o valor Text dele.

    Eu recomendo usar uma Combobox para isso. Nela terá todas as opções também e deixaria seu código mais elegante e limpo. Fica mais ou menos assim:

    Process test11 = new Process();
    test11.StartInfo.FileName = "nslookup";
    test11.StartInfo.UseShellExecute = false;
    test11.StartInfo.Arguments = combobox.Text + " 8.8.8.8 ";
    test11.StartInfo.RedirectStandardOutput = true;
    test11.StartInfo.CreateNoWindow = true;
    test11.Start();
    textBox2.Text = test11.StandardOutput.ReadToEnd();

    OBS: Perceba que com o uso da combobox você elimina todas aquelas verificações que eram feitas com o checkBox

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    terça-feira, 1 de novembro de 2016 12:48
  • Sim, então ele se comporta da mesma forma na sua aplicação.

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quinta-feira, 3 de novembro de 2016 10:10

Todas as Respostas

  • Olá Mário,

    Acredito que seu código está correto, falta apenas um detalhe, na verdade um espaço entre os comandos do textbox e do seu DNS. Segue:

            private void button1_Click(object sender, EventArgs e)
            {
                 Process test1 = new Process();
                 test1.StartInfo.FileName = "nslookup";
                 test1.StartInfo.UseShellExecute = false;
                 test1.StartInfo.Arguments =  textBox1.Text + " " + Meu_DNS;
                 test1.StartInfo.RedirectStandardOutput = true;
                 test1.StartInfo.CreateNoWindow = true;
                 test1.Start();
                 textBox2.Text = test1.StandardOutput.ReadToEnd();
            }

    Estou assumindo MEU_DNS tem o valor do seu DNS mesmo.

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Sugerido como Resposta André SeccoMVP terça-feira, 1 de novembro de 2016 10:03
    • Marcado como Resposta Mário Rodeghiero terça-feira, 1 de novembro de 2016 10:54
    segunda-feira, 31 de outubro de 2016 18:50
  • Boa tarde André,

    na verdade queria passar direto o valor do meu DNS, e não como uma variável. 

    Nesta forma ele ainda identifica erro ao passar o IP.

            private void button1_Click(object sender, EventArgs e)
            {

                 Process test1 = new Process();
                 test1.StartInfo.FileName = "nslookup";
                 test1.StartInfo.UseShellExecute = false;
                 test1.StartInfo.Arguments =  textBox1.Text + " " + 8.8.8.8;
                 test1.StartInfo.RedirectStandardOutput = true;
                 test1.StartInfo.CreateNoWindow = true;
                 test1.Start();
                 textBox2.Text = test1.StandardOutput.ReadToEnd();

    }

    segunda-feira, 31 de outubro de 2016 19:05
  • Mário,

    É que o Arguments recebe uma string, então o 8.8.8.8 tem que estar dentro das aspas, dessa forma:

    test1.StartInfo.Arguments =  textBox1.Text + " 8.8.8.8";


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    segunda-feira, 31 de outubro de 2016 19:20
  • André, Funcionou perfeitamente!

    Muito obrigado pelo apoio e dicas, já comecei acompanhar seu blog e se por acaso tiver mais indicações sobre bons conteúdos, sites de c# e poder indicar, Agradeço!

    Abraço!

    terça-feira, 1 de novembro de 2016 09:11
  • Ótimo Mário,

    Não esqueça de marcar como resposta para que outros usuários identifiquem facilmente a solução!

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    terça-feira, 1 de novembro de 2016 10:03
  • Caros,
    Criei duas formas diferentes para o usuário realizar uma consulta no DNS.

    • Uma usando textbox e outra usando o checkbox.

    • Minha duvida é a seguinte, existe uma forma de chamar o checkbox selecionado, como no codigo abaixo "chekbox?" usando o "IF" com este operador logico "OR"?

     

    private void button1_Click(object sender, EventArgs e)
            {

                       // Codigo para URL fixa


                if (checkBox1.Checked | checkBox2.Checked | checkBox3.Checked | checkBox4.Checked | checkBox5.Checked)
                {
                    Process test11 = new Process();
                    test11.StartInfo.FileName = "nslookup";
                    test11.StartInfo.UseShellExecute = false;
                    test11.StartInfo.Arguments = Checkbox? + " 8.8.8.8 ";
                    test11.StartInfo.RedirectStandardOutput = true;
                    test11.StartInfo.CreateNoWindow = true;
                    test11.Start();
                    textBox2.Text = test11.StandardOutput.ReadToEnd();

    terça-feira, 1 de novembro de 2016 12:36
  • Mário,

    Se entendi bem você quer pegar o valor "Text" da CheckBox que estiver selecionada e já jogar ele como parte do argumento para executar o nslookup, correto?

    Pois bem, não tem como fazer isso da maneira que postou. Ia ter que verificar cada CheckBox e depois se estivesse marcado, pegar o valor Text dele.

    Eu recomendo usar uma Combobox para isso. Nela terá todas as opções também e deixaria seu código mais elegante e limpo. Fica mais ou menos assim:

    Process test11 = new Process();
    test11.StartInfo.FileName = "nslookup";
    test11.StartInfo.UseShellExecute = false;
    test11.StartInfo.Arguments = combobox.Text + " 8.8.8.8 ";
    test11.StartInfo.RedirectStandardOutput = true;
    test11.StartInfo.CreateNoWindow = true;
    test11.Start();
    textBox2.Text = test11.StandardOutput.ReadToEnd();

    OBS: Perceba que com o uso da combobox você elimina todas aquelas verificações que eram feitas com o checkBox

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    terça-feira, 1 de novembro de 2016 12:48
  • Entendi, era isso mesmo André. 

    Vou prosseguir com sua orientação e analisar como funciona o combobox!

    Muito Obrigado !

    terça-feira, 1 de novembro de 2016 12:55
  • Caro,

    Segui com a orientação e deu tudo certo, meu ultimo problema é: 

    • Teria algum motivo  para o retorno do "nslookup" não sinalizar a falha(time out) em todas minhas textbox ?

    terça-feira, 1 de novembro de 2016 18:44
  • Aparentemente não Mário,

    No cmd ele retorna em todas as requisições?


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    terça-feira, 1 de novembro de 2016 19:05
  • Acho que é um peculiaridade do cmd na saida do comando nslookup, porque quando executamos o mesmo site mais de uma vez e ele não esta resolvendo, ele não retorna o timeout no cmd.
    quinta-feira, 3 de novembro de 2016 09:51
  • Sim, então ele se comporta da mesma forma na sua aplicação.

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quinta-feira, 3 de novembro de 2016 10:10