sexta-feira, 2 de outubro de 2015

Mais da Classe Robot - Usando o Cursor do Mouse

Hoje selecionei um código ainda mais simples para testar a classe Robot. O código abaixo faz a impressão da palavra HELLO no Notepad com um delay de 500 milissegundos entre as letras.


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

public class Robot05{
 

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

     int keyInput[] = {
            KeyEvent.VK_H,
            KeyEvent.VK_E,
            KeyEvent.VK_L,
            KeyEvent.VK_L,
            KeyEvent.VK_O
        };

    Runtime.getRuntime().exec("notepad");

    Robot robot = new Robot();

    robot.keyPress(KeyEvent.VK_SHIFT);
    for (int cnt2 = 0;cnt2 < keyInput.length; cnt2++){
      if(cnt2 > 0){
             robot.keyRelease(KeyEvent.VK_SHIFT);
      }
      robot.keyPress(keyInput[cnt2]);
      robot.delay(500);
    }
  }
}



Uma ação bacana da classe é mover o cursor do mouse. Antes um código de programa para capturar e exibir a posição do cursor do mouse.




import java.awt.MouseInfo;


    public class Mouse {
        public static void main(String[] args) {
            while ( true ) {
                System.out.println( MouseInfo.getPointerInfo().getLocation() );
            }
        }
    }



Agora podemos posicionar o mouse em uma localização e capturar os pontos X e Y da localização definida. No programa abaixo definimos as posições que escolhemos usando o código anterior.




import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Robot;
import java.awt.event.InputEvent;


public class RobotExe {

public static void main(String[] args) {
     
 
        try {
            Robot robot = new Robot();        
         
            robot.delay(5000); // Tempo para o programa abrir        
            Point p = new Point();

            p = MouseInfo.getPointerInfo().getLocation();
            System.out.println("x = " + p.x);
            System.out.println("y = " + p.y);
         
            int x = 291;
            int y = 149;
         
            // Move mouse cursor to x, y
            robot.mouseMove(x, y);

            robot.mousePress(InputEvent.BUTTON1_MASK);
            robot.mouseRelease(InputEvent.BUTTON1_MASK);
         

            robot.mouseWheel(-100);
        } catch (AWTException e) {
            e.printStackTrace();
        }
    }
}


O próximo passo seria armazenar as posições de um intervalo de tempo em um arquivo e depois mandar executar as posições do arquivo criando um buffer de memória de movimentação do cursor. Isso seria suficiente para criar um executável no Windows que pode ser ativado em um determinado horário. Esse foi o artifício usado na história contada do post anterior.

Nenhum comentário:

Postar um comentário