Cmd

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

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é.

Uhm…

Legal…

E pra jogar comandos de volta pra dentro do console?

Usar o outputStream ou tem outro caminho melhor?

VELO

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:

[quote=velo]Uhm…

Legal…

E pra jogar comandos de volta pra dentro do console?

Usar o outputStream ou tem outro caminho melhor?

VELO[/quote]

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é.

warcraft 3 member =D

“Some one call for the doctor?”

VELO

Uhm…

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

VELO