Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Tentando entender melhor o Runtime.getRuntime().exec()

Estou tentando desenvolver uma espécie de script p uso pessoal, através do JAVA.

Logo percebi q vou ter q utilizar o Runtime.getRuntime().exec() p realizar a tarefa q preciso, e então comecei a tentar utilizá-lo p testes. Logo no primeiro teste, funcionou. O modelo era:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.IOException;

public class RobotTest {

    public static void main(String[] args) throws IOException {

        try {

            Robot robot = new Robot();

            Runtime.getRuntime().exec("C:\Windows\\notepad.exe");

            robot.delay(5000);
            robot.keyPress(KeyEvent.VK_O);
            robot.keyPress(KeyEvent.VK_I);
            robot.keyPress(KeyEvent.VK_SPACE);
            robot.keyPress(KeyEvent.VK_M);
            robot.keyPress(KeyEvent.VK_U);
            robot.keyPress(KeyEvent.VK_N);
            robot.keyPress(KeyEvent.VK_D);
            robot.keyPress(KeyEvent.VK_O);

        } catch (AWTException e) {
            e.printStackTrace();
        }
    }
}

Porém, quando tento realizar o mesmo processo, só que alterando o path do notepad p o meu desktop, o notepad n é executado. Mesmo quando jogo uma cópia do notepad.exe p desktop.

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.IOException;

public class RobotTest {

    public static void main(String[] args) throws IOException {

        try {

            Robot robot = new Robot();

            Runtime.getRuntime().exec("C:\\Users\\WolfgänG\\Desktop\\notepad.exe");

            robot.delay(5000);
            robot.keyPress(KeyEvent.VK_O);
            robot.keyPress(KeyEvent.VK_I);
            robot.keyPress(KeyEvent.VK_SPACE);
            robot.keyPress(KeyEvent.VK_M);
            robot.keyPress(KeyEvent.VK_U);
            robot.keyPress(KeyEvent.VK_N);
            robot.keyPress(KeyEvent.VK_D);
            robot.keyPress(KeyEvent.VK_O);

        } catch (AWTException e) {
            e.printStackTrace();
        }
    }
}
2 respostas
solução!

Oi Felipe, tudo bem ?

Pode ser que o segundo arquivo não tenha permissão para de execução, isso pode impedir de rodar.

Você não pode colocar esse exe dentro do projeto e habilitar a permissão ?

Obrigado pela atenção, Matheus. Já alterei tanto este projeto q ele ja está anos luz à frente de quando tinha essa dúvida. A execução desse notepad era só um exemplo de um .exe qualquer q eu queria testar p ser executado com o Runtime.getRuntime().exec() naquele momento.

Desde ontem, criei um script utilizando o runtime, e estou muito orgulhoso com o projeto.

import java.awt.Robot;

public class RobotTest {

    public static void main(String[] args) throws Exception {

        Robot robot = new Robot();

        SimulandoCursorEndereco ce = new SimulandoCursorEndereco();

        SimulandoCtrlC ctrlc = new SimulandoCtrlC();

        SimulandoCursorTTS ctts = new SimulandoCursorTTS();

        AltTab operaWebBrowser = new AltTab();

        FechaAba fechaTab = new FechaAba();

        ColarEndereco colaEnd = new ColarEndereco();

        int delay = 500;
        int delay2 = (int) Math.round(delay * 4);

        ce.CursorEndereco();/* Seleciona o endereço no Opera */
        robot.delay(delay);
        ctrlc.CtrlC();/* Copia o endereço e retorna o valor */
        robot.delay(delay2);
        Runtime.getRuntime().exec("cmd.exe /C start microsoft-edge:" + colaEnd.ColarEnd());/* Abre o edge no endereço copiado*/
        robot.delay(delay2);
        ctts.CursorTTS();/* Abre o TTS no edge*/
        robot.delay(delay);
        operaWebBrowser.atab();/* abre o opera atraves de um alt tab simulado */
        robot.delay(delay);
        fechaTab.fecha();/* Fecha a aba recentemente aberta no edge */

        }
}

Se trata de um script p abrir o edge e executar o tts do próprio p ler uma matéria que estou visualizando no opera.