Quero fazer um CMD interativo... Tenho uma idéia.. O que acham?

7 respostas
S

Oi oi Gente.. Segue aqui mais um código que eu tenho e em seguida a pergunta:

public String Rruntime(String command)
    {
        Runtime rt = null;
        rt = rt.getRuntime();
        try {
            Process proc = rt.exec(command);
            InputStream inputStream = proc.getInputStream();  
            OutputStream outputStream = proc.getOutputStream();  
            InputStream input = proc.getInputStream();  
  
            int c;  
            StringBuilder sb = new StringBuilder("");  
                while((c = input.read()) != -1)  
                {  
                 sb.append((char)c);  
                }  
        
           outProcess = sb.toString();
           } catch (IOException ex) {JOptionPane.showMessageDialog(null,"Error: " + ex.getMessage());}
            
        return outProcess;
    }

è assim... Se eu mandar " ping localhost ", ele me retorna o resultado . OK! Funciona perfeitamente pra comandos que me retornam alguma coisa.

Mas agora... Se eu mandar , "CMD" , ele fica travado. Então, estou querendo fazer um interativo, de modo que, mesmo após eu digitar CMD, eu possa continuar interagindo com ele, digitando ping, e pegando os valores...
Eu acho que eu devo enviar CMD pelo parametro do método e depois ficar interagindo com inputstream , esta correto Isso ? Preciso de mais de uma thread ou posso fazer tudo numa classe só ?

Valeu Gente

:D

7 Respostas

M
Andre Lopes:
Oi oi Gente.. Segue aqui mais um código que eu tenho e em seguida a pergunta:
public String Rruntime(String command)
    {
        Runtime rt = null;
        rt = rt.getRuntime();
        try {
            Process proc = rt.exec(command);
            InputStream inputStream = proc.getInputStream();  
            OutputStream outputStream = proc.getOutputStream();  
            InputStream input = proc.getInputStream();  
  
            int c;  
            StringBuilder sb = new StringBuilder("");  
                while((c = input.read()) != -1)  
                {  
                 sb.append((char)c);  
                }  
        
           outProcess = sb.toString();
           } catch (IOException ex) {JOptionPane.showMessageDialog(null,"Error: " + ex.getMessage());}
            
        return outProcess;
    }

è assim... Se eu mandar " ping localhost ", ele me retorna o resultado . OK! Funciona perfeitamente pra comandos que me retornam alguma coisa.

Mas agora... Se eu mandar , "CMD" , ele fica travado. Então, estou querendo fazer um interativo, de modo que, mesmo após eu digitar CMD, eu possa continuar interagindo com ele, digitando ping, e pegando os valores...
Eu acho que eu devo enviar CMD pelo parametro do método e depois ficar interagindo com inputstream , esta correto Isso ? Preciso de mais de uma thread ou posso fazer tudo numa classe só ?

Valeu Gente

:D

com esse código ai vc não tem NullPointer na linha 4?

C

maior_abandonado:

com esse código ai vc não tem NullPointer na linha 4?

É uma chamada a método estático. Dai não tem NP não =]

S

:smiley:
Não da nenhum erro, ele funciona normalmente.

Então, alguém tem alguma idéia como posso fazer isso ?

S

Bom gente, fiquei boa parte da tarde/noite tentando arrumar isso,mas não consegui. O fato é, que ele , por algum motivo para dentro da linha 15 e não sai dali.
Não sei o que fazer;

Por favor, qualquer dica ja ajuda;

E

Um “cmd interativo” (ou seja, um programa Java Swing que se comunique com cmd.exe) é bem chatinho de se escrever em Java. Você realmente quer fazer isso?

S

Quero! Pelo menos como funcionaria. Pra saber o que falta eu aprender. Existe algum conceito de programação que eu não sei. Eu preciso saber como fazer de qualquer jeito. Não vou conseguir viver sem saber como isso funcionaria. :smiley:

S

Então eu preciso aprender SwingWorker ? Alguém pode me confirmar isso antes de eu começar a me matar aprendendo isso ?

:smiley: Valeu gente!

Criado 20 de julho de 2012
Ultima resposta 20 de jul. de 2012
Respostas 7
Participantes 4