Макро-рекордер / плеер - PullRequest
       22

Макро-рекордер / плеер

4 голосов
/ 06 января 2012

Я делаю что-то вроде устройства записи / воспроизведения макросов

Я выполнил часть проигрывателя с помощью таких утилит, как java.awt.Robot(), который эмулирует основные команды вывода мыши / клавиатуры, читая файл XML.

Я застрял в той части, где мне нужно записать этот XML-файл.Я понятия не имею, какой класс я могу использовать, чтобы сделать противоположность Robot (). Если у вас есть для меня какой-нибудь FemaleRobot (), я был бы очень рад: D

Единственное, что у меня есть в этом направлении, покаэто:

   while (true) {
        Point pos = MouseInfo.getPointerInfo().getLocation();
        System.out.println(pos.x+" x "+pos.y);
   }

, что немного, и не совсем то, что я хочу ^ _ ^, я не знаю, как использовать Mouse / KeyListener, так как для этого потребуется компонент.Если это единственный способ, какой Compoment я использую, поскольку я не хочу никакой графической реализации Java?Должен ли я создать фальшивый компонент в любом случае?Какой из них?

например, я хочу, чтобы мой диктофон записывал в XML, как я нажимаю на рабочем столе Ubuntu или нажимаю Enter на Firefox.

Я думаю, это понятно, еслине буду много проверять ответы.Хорошего дня и спасибо за чтение.

Ответы [ 4 ]

3 голосов
/ 08 января 2013

Попробуйте jnativehook lib: http://code.google.com/p/jnativehook/wiki/examples

Он очень прост в использовании и может удовлетворить ваши потребности.

2 голосов
/ 06 января 2012

С сожалением сообщаю, что совершенно невозможно отслеживать щелчки мыши и нажатия клавиш за пределами вашей формы. События Java просто не запускаются за пределами вашей формы.java ведет себя так, чтобы исключить возможность того, что вредоносное ПО на основе Java пытается украсть конфиденциальные данные.

0 голосов
/ 05 августа 2012

Сначала вы можете получить разрешение экрана. Во-вторых, создайте рамку размером с ваш экран и установите ее прозрачность до 0%. Когда вы щелкаете мышью по позиции на экране, опускаете jframe и используете мышь-робот, чтобы щелкните позицию. Вы можете получить координаты всего экрана. Таким образом, вы можете записывать щелчки мыши, но проблема возникает, когда вам нужно ввести текст

0 голосов
/ 06 января 2012

Примеры прослушивателей мыши можно найти здесь: http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html

Для записи в файл вы можете сделать что-то вроде:

FileWriter fileStream = new FileWriter("myfile.extention");
BufferedWriter out = new BufferedWriter(fileStream);
out.write("pos.x+" x "+pos.y");

Если вы делаете это:

while (true) 
{
    Point pos = MouseInfo.getPointerInfo().getLocation();
    System.out.println(pos.x+" x "+pos.y);
}

Вы захотите добавить вызов Thread.Sleep в цикл.

Затем вы можете прочитать файл обратно, выполнив:

FileInputStream fileStream = new FileInputStream("myfile.extention");
  DataInputStream in = new DataInputStream(fileStream);
  BufferedReader br = new BufferedReader(new InputStreamReader(in))
  String position = br.readLine()

Затем вы можете разобрать эту строку, чтобы получить значения.

Так что вы можете сделать что-то вроде:

FileWriter filewrite = new FileWriter("myfile.txt");
BufferedWriter out = new BufferedWriter(filewrite);

while (Recording) 
{
    Point pos = MouseInfo.getPointerInfo().getLocation();
    out.write(pos.x + " " + pos.y);

    Thread.sleep(50);
}

FileInputStream fileStream = new FileInputStream("myfile.txt");
DataInputStream in = new DataInputStream(fileStream);
BufferedReader br = new BufferedReader(new InputStreamReader(in))

String position;
while(position = br.readLine() != null)
{
    String[] positions = position.split(" ");
    int x = Integer.parseInt(positions[0]);
    int y = Integer.parseInt(positions[1]);
}

Вам нужно будет использовать события мыши для записи позиций щелчков в файл.

...