Forma fácil de executar comandos do prompt apartir do Vb.net.
Adicione duas caixas de textos e um botão de ação, onde a primeira serve para enviar comandos e a segunda para receber os os dados da janela do prompt.
Segue código abaixo:
-------------------------------------------
Public Class hckGoogleBusca
Private Sub btnTeste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTeste.Click
Dim CMD As New Threading.Thread(AddressOf AbreCMD)
CMD.Start()
End Sub
Private Sub AbreCMD()
'DECLARA PROCESSO E INFORMAÇÕES DE INÍCIO
Dim CMDProcesso As New Process
Dim CMDInfoInicio As New System.Diagnostics.ProcessStartInfo
'INICIA NOVO PROMPT DE COMANDO
CMDInfoInicio.FileName = "cmd"
'REDIRECIONA INPUT
CMDInfoInicio.RedirectStandardInput = True
'REDIRECIONA OUTPUT
CMDInfoInicio.RedirectStandardOutput = True
'REQUERIDO PARA REDIRECIONAMENTO
CMDInfoInicio.UseShellExecute = False
'SETA INFORMAÇÕES DE INICIALIZAÇÃO
CMDProcesso.StartInfo = CMDInfoInicio
'INICIA PROCESSO
CMDProcesso.Start()
'DECLARA STREAMS DE LEITURA E ESCRITA
'E OS SETA COMO INPUT E OUTPUT DO PROCESSO
Dim SR As System.IO.StreamReader = CMDProcesso.StandardOutput
Dim SW As System.IO.StreamWriter = CMDProcesso.StandardInput
'ENVIA COMANDO APARTIR DA CAIXA DE TEXTO
SW.WriteLine(txtCmdEnviado.Text)
'ENVIA COMANDO PARA O PROMPT (SAIR)
SW.WriteLine("exit")
'RETORNA RESULTADO DO PROMPT NUMA CAIXA DE TEXTO
txtCmdRecebido.Text = SR.ReadToEnd
'FECHA STREAMS
SW.Close()
SR.Close()
End Sub
End Class
7 comentários:
Muito bom cara , a tempos to procurando algo nesse sentido, mas aproveitando a deixa, como faço no caso de um teste de telnet, pra eu pegar se da erro ou nao no teste, desde já muito obrigado
Ronaldo Souza
Olá gostaria de tirar uma dúvida :
o txtCmdEnviado e o txtCmdRecebido não deveriam ser declarados ?
Olá Clever,
Não há necessidade de declaração, pois se tratam de objetos.
Em outras palavras: são duas caixas de texto que devem ser adicionadas ao formulário; uma deve conter o comando que você deseja enviar (txtCmdEnviado) e a outra é a resposta do prompt de comando (o resultado após execução do mesmo).
Fico feliz em ter ajudado.
Att. Silvio Ricardo
Espetacular!!
Ajudou me imenso!!
Muito obrigado e continuação :)
Muito bom código.
Pra mim aparece o seguinte erro
Operação entre threads inválida: controle 'textbox1' acessado de um thread que não é aquele no qual foi criado."}
Resposta ao Josino Dias.
Coloque assim antes sem as setas...
---> Control.CheckForIllegalCrossThreadCalls = False <---
Dim CMD As New Threading.Thread(AddressOf AbreCMD)
CMD.Start()
:)
Postar um comentário