mar

14

Robot ? O Que é isso?

By Felipe Saab

Tempo é um troço foda… Só falta… nunca tem sobrando…
Depois de muito tempo sem um post, aqui estamos nós.

Hoje a gente vai desvendar a classe Robot, muito útil para testes automáticos, criação de bots e outros.

Em resumo, a classe Robot simula eventos do teclado, mouse e outros.

É tudo muito fácil, vamos ao código:

try {
	Robot robot = new Robot();
	robot.delay(1000);
	robot.keyPress(KeyEvent.VK_J);
	robot.keyPress(KeyEvent.VK_A);
	robot.keyPress(KeyEvent.VK_V);
	robot.keyPress(KeyEvent.VK_A);
	robot.keyPress(KeyEvent.VK_SPACE);
	robot.keyPress(KeyEvent.VK_S);
	robot.keyPress(KeyEvent.VK_I);
	robot.keyPress(KeyEvent.VK_M);
	robot.keyPress(KeyEvent.VK_P);
	robot.keyPress(KeyEvent.VK_L);
	robot.keyPress(KeyEvent.VK_E);
	robot.keyPress(KeyEvent.VK_S);
} catch (Exception ex) {
	System.out.println(ex.getMessage());
}

Para testar esse código basta executar o aplicativo e alternar para um editor de texto qualquer (em menos de 1 segundo).

Tudo o que esse código faz é criar um novo objeto da classe Robot, esperar por um segundo (pra dar tempo de alternar para um editor de texto)  e simular o pressionamento de algumas teclas.

Um efeito bem legal é colocar um delay entre cada uma das teclas. Isso faz parecer que as teclas estão sendo digitas. Segue o código:

try {
	Robot robot = new Robot();
	robot.delay(1000);
	robot.keyPress(KeyEvent.VK_J);
	robot.delay(500);
	robot.keyPress(KeyEvent.VK_A);
	robot.delay(500);
	robot.keyPress(KeyEvent.VK_V);
	robot.delay(500);
	robot.keyPress(KeyEvent.VK_A);
	robot.delay(500);
	robot.keyPress(KeyEvent.VK_SPACE);
	robot.delay(500);
	robot.keyPress(KeyEvent.VK_S);
	robot.delay(500);
	robot.keyPress(KeyEvent.VK_I);
	robot.delay(500);
	robot.keyPress(KeyEvent.VK_M);
	robot.delay(500);
	robot.keyPress(KeyEvent.VK_P);
	robot.delay(500);
	robot.keyPress(KeyEvent.VK_L);
	robot.delay(500);
	robot.keyPress(KeyEvent.VK_E);
	robot.delay(500);
	robot.keyPress(KeyEvent.VK_S);
} catch (Exception ex) {
	System.out.println(ex.getMessage());
}

A classe Robot permite a simulação de eventos do mouse também:

try {
    Robot robot = new Robot();
    robot.mouseMove(1100, 10);
    robot.delay(500);
    robot.mousePress(InputEvent.BUTTON1_MASK);
} catch (Exception ex) {
    System.out.println(ex.getMessage());
}

O código acima apenas coloca o mouse na posição 1100,10 da tela e simula um clique do botão esquerdo.

Post curto pra um assunto de fácil entendimento. Espero que ninguem encontre dificuldades quando estiver utilizando essa classe tão legal.

[]s,

Saab.

PS: Esse post foi uma dica do Dang do Programei.org. Valew fera!

4 Responses so far

invez de tantos:
robot.delay(500);
robot.keyPress(KeyEvent.VK_A);
robot.delay(500);
robot.keyPress(KeyEvent.VK_V);
robot.delay(500);
robot.keyPress(KeyEvent.VK_A);
robot.delay(500);
robot.keyPress(KeyEvent.VK_SPACE);

vc pode usar isto: robot.setAutoDelay(500);

Valew Tiago,
Nem tinha me tocado desse método, fiz o post meio correndo ontem a noite e nem explorei muito as funcionalidades da classe.
Fica ai a dica do Tiago pessoal (muito útil por sinal)!

Obrigado de novo!
[],
Saab.

Já tiha ouvido falar..mas nunca pesquisei.. muito interessante mesmo =D
quando tiver um tempinho vo dar uma brincada

vlw Saab

Muito interessante, não conhecia essa classe, gostei muito da brincadeiraa, parabéns…

Leave a comment