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