[RESOLVIDO] Classe Robot?

7 respostas
D

Olá, eu sei que com a classe robot é possível manipular o mouse e o teclado, mas eu só sei escrever da seguinte maneira:

robot.keyPress(KeyEvent.VK_PERIOD);   //pressiona a tecla
             robot.keyRelease(KeyEvent.VK_PERIOD);        //solta a tecla
             robot.keyPress(KeyEvent.VK_T);
             robot.keyRelease(KeyEvent.VK_T);
             robot.keyPress(KeyEvent.VK_X);
             robot.keyRelease(KeyEvent.VK_X);
             robot.keyPress(KeyEvent.VK_T);
             robot.keyRelease(KeyEvent.VK_T);

Mas eu estou precisando escrever um valor armazenado em uma variável, por exemplo:

quantidade = 300;

Álguem sabe se é possível eu escrever essa variável "quantidade" ?
Aguardo...

7 Respostas

M

A dúvida é como acessar o nome da variável ou como escrevê-la com Robot?

D

Eu gostaria de escrever o conteúdo da variável com Robot.

M

Olha, vou postar em anexo um exemplo que tenho aqui. Não é 100% mas deve resolver seu problema. Teste e diga o que achou.

D

Valeu marcobiscaro2112, era exatamente isso que eu queria !
Abracos

L

Fala meu amigo!!!
Estou com o mesmo problema que voce tinha!!!
Tu conseguiu fazer funcionar?
Por exemplo
IMPRIMIR o conteudo da variavel

int A = 30

Mostra ai pra mim que estou com a mesma duvida… pls!

D

A linha 41-44 do primeiro arquivo abaixo faz o que vc deseja !
Abracos

package a1;

import static java.awt.event.KeyEvent.VK_A;
import static java.awt.event.KeyEvent.VK_CONTROL;
import static java.awt.event.KeyEvent.VK_DOWN;
import static java.awt.event.KeyEvent.VK_F;
import static java.awt.event.KeyEvent.VK_F11;
import static java.awt.event.KeyEvent.VK_N;
import static java.awt.event.KeyEvent.VK_S;
import static java.awt.event.KeyEvent.VK_SHIFT;

import java.awt.Robot;

public class RobotTest {

	public static void main(String[] args) throws Exception {
		/*
		 * THIS TEST SHOULD WORK ONLY ON ECLIPSE
		 */
		Robot robot = new Robot();
		robot.setAutoDelay(10);
		robot.setAutoWaitForIdle(true);
		robot.delay(3000);
		RobotManager manager = new RobotManager(robot);
		// Ctrl + N (New)
		//manager.typeSequence(VK_CONTROL, VK_N);
		robot.delay(1000);
		// new class
		manager.type("class\n\n");
		robot.delay(500);
		// class name: HelloRobot
		manager.type("HelloRobot\n");
		robot.delay(500);

		// Ctrl + A (Select all)
		//manager.typeSequence(VK_CONTROL, VK_A);

		manager.type(VK_DOWN);
                manager.type("\n");

                int a = 100;
                String b;
                b = String.valueOf(a);
                manager.type(b);


		/*// Ctrl + Shift + F (Format)
		manager.typeSequence(VK_CONTROL, VK_SHIFT, VK_F);
		robot.delay(500);
		// Ctrl + S (Save)
		manager.typeSequence(VK_CONTROL, VK_S);
		robot.delay(2000);
		// Ctrl + F11 (Run)
		manager.typeSequence(VK_CONTROL, VK_F11);*/
	}

}
import static java.awt.event.KeyEvent.VK_AMPERSAND;
import static java.awt.event.KeyEvent.VK_ASTERISK;
import static java.awt.event.KeyEvent.VK_AT;
import static java.awt.event.KeyEvent.VK_BACK_SLASH;
import static java.awt.event.KeyEvent.VK_CIRCUMFLEX;
import static java.awt.event.KeyEvent.VK_CLOSE_BRACKET;
import static java.awt.event.KeyEvent.VK_COLON;
import static java.awt.event.KeyEvent.VK_COMMA;
import static java.awt.event.KeyEvent.VK_DEAD_TILDE;
import static java.awt.event.KeyEvent.VK_DOLLAR;
import static java.awt.event.KeyEvent.VK_EQUALS;
import static java.awt.event.KeyEvent.VK_EXCLAMATION_MARK;
import static java.awt.event.KeyEvent.VK_LEFT_PARENTHESIS;
import static java.awt.event.KeyEvent.VK_MINUS;
import static java.awt.event.KeyEvent.VK_NUMBER_SIGN;
import static java.awt.event.KeyEvent.VK_OPEN_BRACKET;
import static java.awt.event.KeyEvent.VK_PERIOD;
import static java.awt.event.KeyEvent.VK_PLUS;
import static java.awt.event.KeyEvent.VK_QUOTEDBL;
import static java.awt.event.KeyEvent.VK_RIGHT_PARENTHESIS;
import static java.awt.event.KeyEvent.VK_SEMICOLON;
import static java.awt.event.KeyEvent.VK_SLASH;
import static java.awt.event.KeyEvent.VK_SPACE;
import static java.awt.event.KeyEvent.VK_UNDERSCORE;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public final class KeyMapper {

	public static final Map<Character, Integer> KEYS;

	static {
		Map<Character, Integer> map = new HashMap<Character, Integer>();
		for (char c = 'A'; c <= 'Z'; c++) {
			map.put(c, (int) c);
		}
		for (char c = '0'; c <= '9'; c++) {
			map.put(c, (int) c);
		}
		for (char c = '\b'; c <= '\n'; c++) {
			map.put(c, (int) c);
		}
		map.put(' ', VK_SPACE);
		map.put(',', VK_COMMA);
		map.put('.', VK_PERIOD);
		map.put('!', VK_EXCLAMATION_MARK);
		map.put('\\', VK_BACK_SLASH);
		map.put('|', VK_BACK_SLASH);
		map.put(':', VK_COLON);
		map.put('$', VK_DOLLAR);
		map.put('_', VK_UNDERSCORE);
		map.put(';', VK_SEMICOLON);
		map.put(':', VK_SEMICOLON);
		map.put('-', VK_MINUS);
		map.put('*', VK_ASTERISK);
		map.put('+', VK_PLUS);
		map.put('/', VK_SLASH);
		map.put('?', VK_SLASH);
		map.put('=', VK_EQUALS);
		map.put('@', VK_AT);
		map.put('^', VK_CIRCUMFLEX);
		map.put('(', VK_LEFT_PARENTHESIS);
		map.put(')', VK_RIGHT_PARENTHESIS);
		map.put('#', VK_NUMBER_SIGN);
		map.put('[', VK_OPEN_BRACKET);
		map.put(']', VK_CLOSE_BRACKET);
		map.put('{', VK_OPEN_BRACKET);
		map.put('}', VK_CLOSE_BRACKET);
		map.put('&', VK_AMPERSAND);
		map.put('\'', VK_QUOTEDBL);
		map.put('\"', VK_QUOTEDBL);
		map.put('<', VK_COMMA);
		map.put('>', VK_PERIOD);
		map.put('&', VK_AMPERSAND);
		map.put('~', VK_DEAD_TILDE);
		map.put('^', VK_DEAD_TILDE);
		KEYS = Collections.unmodifiableMap(map);
	}

	private KeyMapper() {
		// can not instantiate
	}

}
import static java.awt.event.InputEvent.BUTTON1_MASK;
import static java.awt.event.InputEvent.BUTTON2_MASK;
import static java.awt.event.KeyEvent.VK_NUMBER_SIGN;
import static java.awt.event.KeyEvent.VK_SHIFT;
import static a1.KeyMapper.KEYS;

import java.awt.Robot;

public final class RobotManager {

	private Robot robot;

	public RobotManager(Robot robot) throws NullPointerException {
		if (robot == null) {
			throw new NullPointerException();
		}
		this.robot = robot;
	}

	public void click(int x, int y) {
		robot.mouseMove(x, y);
		robot.mousePress(BUTTON1_MASK);
	}

	public void rightClick(int x, int y) {
		robot.mouseMove(x, y);
		robot.mousePress(BUTTON2_MASK);
	}

	public void type(int key) {
		robot.keyPress(key);
		robot.keyRelease(key);
	}

	public void typeSequence(int... keys) {
		for (int i = 0; i < keys.length; i++) {
			robot.keyPress(keys[i]);
		}
		for (int i = keys.length - 1; i >= 0; i--) {
			robot.keyRelease(keys[i]);
		}
	}

	public void type(String string) {
		for (char c : string.toCharArray()) {
			if (Character.isUpperCase(c) || mustPressShift(c)) {
				robot.keyPress(VK_SHIFT);
			}
			Integer i = KEYS.get(Character.toUpperCase(c));
			if (i == null) {
				i = VK_NUMBER_SIGN;
			}
			type(i);
			if (Character.isUpperCase(c) || mustPressShift(c)) {
				robot.keyRelease(VK_SHIFT);
			}
		}
	}

	private boolean mustPressShift(char c) {
		return c == '!' || c == '@' || c == '#' || c == '$' || c == '%'
				|| c == '&' || c == '*' || c == '(' || c == ')' || c == '`'
				|| c == '{' || c == '}' || c == '^' || c == '?' || c == ':'
				|| c == '>' || c == '<' || c == '|' || c == '\"';
	}

}
C

Ótimas classes!

mas, aqui esta dando um erro quando tento digitar @…

Alguem sabe dizer o pq?

Grato!

Criado 14 de dezembro de 2010
Ultima resposta 29 de mar. de 2011
Respostas 7
Participantes 4