Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Executar arquivo com parametros


Topher

Pergunta

Bom galera, estou tentando desenvolver um aplicativo simples que executará um arquivo com os parametros:

"-ip:*******.no-ip.org -port:2106 -lang:enu -cc:1 -noauthgg -noweb"

Contudo, mesmo com o aplicativo pronto e funcionando, ele não está carregando a DNS do no-ip, se eu colocar o meu IP (numerico) normalmente ele carrega.

Eu vi que um cara solucionou esse problema usando um arquivo externo com a extenção ".ini", que é parametro de configuração, contudo o arquivo dele não é open source e eu não gostei do design. E de acordo com ele, ele somente colocou esse arquivo externo para que pessoas com eu, possam editar os parametros da maneira que quiser, ou seja, não é necessario esse arquivo (.ini).

Mesmo criando um arquivo de lotes (.bat) ele não executa o programa com esse parametro.

Eu sei que da pra descobrir o ip numerico sabendo a DNS, é só abrir a prompt de comando digitar ping "dns" e abaixo aparece o ip numerico, eu pensei em fazer com que o aplicativo fizesse esse processo para descobrir o ip numerico e usasse esse ip descoberto, mas não tenho ideia de como fazer isso.

Alguém sabe o que o cara usou para solucionar isso, e pode me encinar ?

Estou fazendo o seguinte:

Shell("bin32\programa.bin -ip:******.no-ip.org -port:2106 -noauthgg -cc:1 -lang:enu -noweb")
        Application.Exit()

Editado por Topher
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

System.Net.IPHostEntry ie = System.Net.Dns.Resolve("*****.no-ip.org");
Isso se tiver usando C#, o método Resolve da classe DNS em System.Net consegue informações sobre um DNS. Depois pode conseguir a lista de endereços númericos ultilizando:
ie.AddressList

AddressList retorna uma lista de IPAddress contendo todos os IP's númericos relacionados com o Host.

Espero ter ajudado,

~Onidsouza

EDIT: Nota, o método está sendo abandonado, porém ainda é ultilizável. Procurarei saber um geito alternativo e lhe direi se achar.

Editado por Onidsouza
Link para o comentário
Compartilhar em outros sites

  • 0

Onidsouza, esse método funcionou, porém como faço para que os IPs adquiridos na AddressList retorne no meu parametro ?

System.Net.IPHostEntry ie = System.Net.Dns.Resolve("*****.no-ip.org");
System.Diagnostics.Process.Start("/bin32/programa.bin", "ip:>>retorno<< -port:2106 -noauthgg -cc:1 -lang:enu -noweb");

Obrigado

Editado por Topher
Link para o comentário
Compartilhar em outros sites

  • 0

Eu consegui da seguinte maneira:

IPHostEntry ie = Dns.Resolve("*****.no-ip.org");
if (ie.AddressList.Length == 0) { MessageBox.Show("Erro: Nenhum IP numérico"); return; }
IPAddress ipNumber = ie.AddressList[0];
string parameters = string.Format("ip:{0} -port:2106 -noauthgg -cc:1 -lang:enu -noweb", ipNumber.ToString());
Na segunda linha ele verifica se existe números de IP para o DNS, Na quarta linha ele formata os parametros. Aí você passa para o método Start dessa maneira:
System.Diagnostics.Process.Start("/bin32/programa.bin", parameters);

Boa sorte,

~Onidsouza

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado por estar me ajudando cara. Colocando esse novo codigo ele deu erro no "IPAddress".

System.Net.IPHostEntry ie = System.Net.Dns.Resolve("*****.no-ip.org");
if (ie.AddressList.Length == 0) { MessageBox.Show("Erro: Nenhum IP numérico"); return; }
IPAddress ipNumber = ie.AddressList[0];
string parameters = string.Format("ip:{0} -port:2106 -noauthgg -cc:1 -lang:enu -noweb", ipNumber.ToString());

O erro acontece no "IPAddress" da terceira linha: the type or namespace name 'IPAddress' could not be found...

Link para o comentário
Compartilhar em outros sites

  • 0

Boa cara funcionou 100%, contudo quando eu clico para abrir o arquivo aparece aquela tela:

"O windows não pode abrir esse arquivo

O Windows precisar saber qual programa o arquivo deve ser aberto.(...)"

Dai aparece pra eu escolher o programa e tals.

Contudo esse programa abre normalmente usando o arquivo de lotes do windows (.bat), com o comando "start", e usando o VB (visual basic) com o comando "shell" ele abre também, mas os parametros não funcionam, a mensagem que da usando no VB é:

"InvalidCastException was unhandled

A conversão da seqüência de caracteres '-ip:>Aqui aparece o ip da DNS< -port:2106 -noau' no tipo 'Short' não é válida."

Teria uma maneira de executar o programa direto, como se usasse o comando Shell no C#, utilizando esses parametros ? Ou se não, teria uma solução para atulizar esses parametros no VB mesmo?

Codigo usado no VB:

Imports System
Imports System.Net

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ie As IPHostEntry = Dns.Resolve("****.no-ip.org")
        If ie.AddressList.Length = 0 Then
            MessageBox.Show("Erro: Nenhum IP numérico")
            Return
        End If
        Dim ipNumber As IPAddress = ie.AddressList(0)
        Dim parameters As String = String.Format("-ip:{0} -port:2106 -noauthgg -cc:1 -lang:enu -noweb", ipNumber.ToString())
        Shell("C:/(...)/bin32/programa.bin", parameters)
    End Sub
End Class

NT:

1.O endereço do arquivo foi diminuido

2.Eu tentei usar o comando "Process.Start" no VB e deu o mesmo erro.

Link para o comentário
Compartilhar em outros sites

  • 0

Resolvido em VB:

Imports System
Imports System.Net
Public Class Form1
    'Button1, executando o aplicativo
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        Dim address As IPAddress
        For Each address In Dns.GetHostEntry("DNS AQUI").AddressList
            Interaction.Shell(("'Caminho do arquivo' -ip:" & address.ToString & "'outros parametros'"), AppWinStyle.MinimizedFocus, False, -1)
        Next
        Application.Exit()
    End Sub
End Class

Obrigado Onidsouza pela ajuda!

Editado por Topher
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...