Clase de robot en Java AWT

La clase Robot en el paquete Java AWT se utiliza para generar eventos de entrada del sistema nativo con el fin de automatización de pruebas, demostraciones autoejecutables y otras aplicaciones donde se necesita el control del mouse y el teclado. El objetivo principal de Robot es facilitar las pruebas automatizadas de las implementaciones de la plataforma Java. En términos simples, la clase proporciona control sobre los dispositivos de mouse y teclado.

Aquí hay un ejemplo de cómo la clase Robot toma el control del teclado y escribe en un documento de Bloc de notas en blanco. El Bloc de notas se llama usando Proceso y Tiempo de ejecución, como se explica en este artículo .

Java

// Java program to demonstrate working of Robot
// class. This program is for Windows. It opens
// notepad and types a message.
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.*;
 
public class robo
{
    public static void main(String[] args) throws IOException,
                           AWTException, InterruptedException
    {
        String command = "notepad.exe";
        Runtime run = Runtime.getRuntime();
        run.exec(command);
        try {
            Thread.sleep(2000);
        }
        catch (InterruptedException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
        // Create an instance of Robot class
        Robot robot = new Robot();
 
        // Press keys using robot. A gap of
        // of 500 milli seconds is added after
        // every key press
        robot.keyPress(KeyEvent.VK_H);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_E);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_L);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_L);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_O);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_SPACE);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_F);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_R);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_O);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_M);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_SPACE);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_G);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_E);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_E);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_K);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_S);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_F);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_O);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_R);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_G);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_E);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_E);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_K);
        Thread.sleep(500);
        robot.keyPress(KeyEvent.VK_S);
    }
}

Producción: 

The code opens a blank Notepad file and types 
"hello from geeksforgeeks" onto it with a delay
of 500 ms before typing out each character.
 

Es posible que ya haya descubierto que el código se ha vuelto muy largo para escribir una pequeña string. En ese caso, podemos almacenar el mensaje en una string e iterarlo y mostrarlo. Para presionar las letras mayúsculas tenemos que presionar hacia abajo la tecla shift, presionar la tecla y luego soltar la tecla shift. Lo mismo se puede hacer con los símbolos también.

Java

import java.awt.*;
import java.awt.event.KeyEvent;
 
class Robo {
    // Our custom sleep method
    public static void sleep(long ms) {
        try {Thread.sleep(ms);} catch (Exception ignored) {}
    }
 
    public static void main(String[] args) throws Exception {
        // Open Notepad
        Runtime.getRuntime().exec("notepad.exe");
        // Wait for 2 seconds
        sleep(2000);
        // Create instance of Robot class
        Robot robot = new Robot();
        // The String to type
        String str = "Hello from GeeksforGeeks";
        // Press keys using robot
        // A gap of 200ms is added between each key press
        for (int i = 0; i < str.length(); i++) {
            // Check if the current character is a capital letter
            if (Character.isUpperCase(str.charAt(i))) {
                // Press shift key
                robot.keyPress(KeyEvent.VK_SHIFT);
                // Press the current character
                robot.keyPress(Character.toUpperCase(str.charAt(i)));
                // Release shift key
                robot.keyRelease(KeyEvent.VK_SHIFT);
            }
            // else display the character as it is
            else robot.keyPress(Character.toUpperCase(str.charAt(i)));
            // wait for 200ms
            sleep(200);
        }
    }
}

Esto abre el Bloc de notas y escribe lo mismo con un espacio de 200 ms entre caracteres. Este enfoque es mejor cuando se trabaja con elementos más grandes.

Métodos de la clase Robot

Tipo de devolución Método Descripción
BufferedImage createScreenCapture(Rectángulo de pantalla) Crea una imagen que contiene píxeles leídos de la pantalla.
vacío retardo (int ms) Duerme durante el tiempo especificado.
En t getAutoDelay() Devuelve el número de milisegundos que este robot duerme después de generar un evento.
Color getPixelColor(int x, int y) Devuelve el color de un píxel en las coordenadas de pantalla dadas.
booleano isAutoWaitForIdle() Devuelve si este robot invoca automáticamente waitForIdle después de generar un evento.
vacío pulsación de tecla (código clave int) Presiona una tecla determinada.
vacío keyRelease (código clave int) Libera una clave determinada.
vacío mouseMove(int x, int y) Mueve el puntero del mouse a las coordenadas de pantalla dadas.
vacío mousePress (botones int) Presiona uno o más botones del mouse.
vacío mouseRelease (botones int) Libera uno o más botones del ratón.
vacío mouseWheel(int ruedaAmt) Gira la rueda de desplazamiento en ratones equipados con rueda.
vacío setAutoDelay(int ms) Establece la cantidad de milisegundos que este robot duerme después de generar un evento.
vacío setAutoWaitForIdle(booleano está activado) Establece si este robot invoca automáticamente waitForIdle después de generar un evento.
vacío esperar inactivo() Espera hasta que se hayan procesado todos los eventos actualmente en la cola de eventos. 
 

Este artículo es una contribución de Anannya Uberoi . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *