Cmd

6 respostas
velo

Pessoas…

Eu queria encapsular um console dentro de uma aplicaçao swing…

Eu ateh vi que com o Runtime.getRuntime eu consigo executar o console, mas, como eu faço para jogar comandos lah pra dentro e obter os retorno num jtextarea?

Alguem tem um exemplo? Console windows dentro de uma java swing java.

VELO

6 Respostas

KWill

Até pouco tempo estive criando em java um servidor telnet de brincadeira, batizado de SatanAnyWhere.

Pegue a instância de Process que representa o console executando no Sistema Operacional, e capture a saída padrão do console usando Process.getInputStream().

Aí faça uma Thread separada que vai consumindo a saída padrão do console por esse InputStream, e no seu caso, vá jogando essa saída no seu TextArea.

Acho que ajuda.

Inté.

velo

Uhm…

Legal…

E pra jogar comandos de volta pra dentro do console?

Usar o outputStream ou tem outro caminho melhor?

VELO

BrunoLaser

Olá…
Tenta isso:

try {
                Process p = Runtime.getRuntime().exec(O SEU COMANDO AQUI);
                InputStream is = p.getInputStream();
                String result = null;
                try {
                    Thread.currentThread().sleep(1000);//CADA 1000 EQUIVALE A UM SEGUNDO
                } catch (InterruptedException eIE) {
                }
                while(is.available()>0) {
                    result = result + ((char)is.read());
                }
                jTextField1.setText(result);
            } catch(IOException e) {
                System.out.println(e);
            }

Espero que ajude :slight_smile:

KWill

velo:
Uhm…

Legal…

E pra jogar comandos de volta pra dentro do console?

Usar o outputStream ou tem outro caminho melhor?

VELO

Acho que não entendi bem esse negócio de “comandos para dentro”, mas para enviar comandos para o console, aparentemente esse é o melhor caminho mesmo, a menos que você esteja disposto a fazer uma super gambiarra com jni.

Uma coisa que esqueci de te alertar é que você também deve tratar a saída de erro do programa consumindo a saída de erro do console, fazendo na mesma thread que lê a saida padrão a leitura do stream recebido por Process.getErrorStream().

Recomendo que antes de bloquear nas leituras, deva-se verificar se há algo para ser lido, com a interpretação do valor que Inpustream.available() retorna.

Inté.

velo

warcraft 3 member =D

“Some one call for the doctor?”

VELO

velo

Uhm…

Bem, no caso o error não me interessa muito (não me interessa nem um pouco)

VELO

Criado 12 de junho de 2007
Ultima resposta 15 de jun. de 2007
Respostas 6
Participantes 3