Muchas veces, esperamos implementar pruebas automáticas, funciones de demostración automática u otras aplicaciones de control de mouse y teclado (como ayudar a las personas a hacer clic en los anuncios para obtener ganancias, etc.). Para este propósito, desde JDK1.3, nos ha proporcionado un robot que genera eventos de entrada nativos: Java.awt.Robot.
A continuación presentaré las funciones de Robot y los ejemplos de aplicaciones en detalle:
1. Funciones principales del robot
1. BufferedImage CreateScreencapture (Rectangle ScreenRect)
Nota: Este método proporciona una función similar a la tecla PrintScreen en el teclado, copiando los píxeles de la pantalla en el área rectangular especificada para generar una imagen buffered.
Aplicación: Podemos usar este método en un programa de gráficos, o usarlo para realizar una transmisión de pantalla remota, que puede convertirse en un programa remoto de monitoreo de computadora, etc.
2. Retraso nulo (int ms)
Descripción: Se usa para dormir el programa actual (hilo) durante varios milisegundos (MS).
Aplicación: se puede utilizar para controlar el retraso del programa. Esto es generalmente necesario porque definitivamente tendrá un retraso en las dos operaciones de intervalos.
3. Color getPixelColor (int x, int y)
Descripción: Obtenga el valor de color de la posición de píxel de las coordenadas de pantalla dadas.
Aplicación: Simplemente tome el valor de color RGB, para que no diré mucho.
4. Void KeyPress (int KeyCode)
void keyRelease (int keycode)
Nota: Puede ver las funciones de estos dos métodos de un vistazo. La tecla Presione y las acciones de elevación utilizadas para generar la tecla especificada son equivalentes a la función KeyB_Event de la API Win32, es decir, para simular las operaciones del teclado. Los valores específicos del código clave son KeyVent.vk_c, KeyEvent.vk_D, KeyEvent.vk_Control, etc. Al aplicar la aplicación específica, lo sabrá mirando el indicador del eclipse.
Aplicación: se puede utilizar para demostración automática, pruebas, etc. de programas, lo cual es muy útil.
5. NUEVO MOUSEMOVE (INT X, INT Y)
Descripción: Mueva el cursor del mouse a las coordenadas de pantalla especificadas.
Aplicación: Se puede utilizar para demostración automática, pruebas, etc. del programa, y es indispensable para su uso con otros métodos.
6. NUEVO MOUSEPRESS (BOTONES INT)
nulo mouserelease (botones int)
Void mousewheel (int Wheelamt)
Nota: Los tres métodos anteriores generan el movimiento de la rueda de presión, elevación y desplazamiento del botón especificado del mouse, que simula la operación del mouse. Los valores de los botones específicos incluyen inPutevent.Button1_mask (botón del mouse izquierdo), inPutevent.Button3_MASK (botón derecho del mouse, si es un mouse de doble clave, use inPutevent.Button2_mask en su lugar).
Aplicación: También se puede utilizar para demostración automática, pruebas, etc. del programa. Es muy importante usarlo junto con otros métodos.
2. Ejemplos de aplicación
He escrito dos ejemplos de aplicaciones relativamente pequeños, uno es una prueba de simulación simple y la otra es hacer clic automáticamente en los anuncios para obtener ganancias. Las siguientes son demostraciones.
Primero escriba algunos métodos comunes comunes.java
paquete com.alexa; import java.awt.rectangle; import java.awt.robot; import java.awt.toolkit; import java.awt.event.inputevent; import java.awt.event.keyevent; import java.awt.image.bufferedImage; import javax.swing.icon; import javax.swing.imageicon; /** * @Description Robot Clase de ayuda para implementar funciones básicas * @author Alexia * @Date 2013/5/18 * */public class Common {/** * Click de mouse (Click izquierdo), y si desea hacer doble clic, llamará continuamente * * @param r * @param x * x coordinada posición * @param y * y coordinada * @param retraso * retraso * clicklmouse (robot r, int x, int y, int demora) {r.mousemove (x, y); R.Mousepress (inPutevent.Button1_Mask); R.Delay (10); r.MoUSerElease (inPutevent.Button1_MASK); R.Delay (retraso); } / ** * Haga clic con el botón derecho en el mouse, y si desea hacer doble clic, llame continuamente * * @param r * @param x * x posición de coordenada * @param y * y coordenada posición * @param retraso * tiempo de retraso después de esta operación * / public static void clickrMouse (robot r, int x, int y, int demora) {r.mouseMove (x, y); r.Mousepress (inPutevent.Button3_MASK); R.Delay (10); r.MoUSerElease (inPutevent.Button3_Mask); R.Delay (retraso); } / ** * Entrada del teclado (solo se puede ingresar un carácter a la vez) * * @param r * @param ks * matriz de caracteres ingresados por teclado * @param retraso * Tiempo de retraso después de ingresar una tecla * / public static void pressKeys (robot r, int [] ks, int demora) {para (int i = 0; i <ks.length; i ++) {R.KeyPRess (ks [i]; R.Delay (10); R.KeyReLease (ks [i]); R.Delay (retraso); }} / ** * Copiar * * @param r * @throws interruptedException * / void docopy (robot r) lanza interruptedException {thread.sleep (3000); R.SetAutodelay (200); R.KeyPress (KeyEvent.vk_Control); R.KeyPress (keyEvent.vk_c); R.KeyReLease (keyEvent.vk_control); R.KeyReLease (keyEvent.vk_c); } / ** * pegar * * @param r * @throws interrumpedException * / void doparse (robot r) lanza interruptedException {r.setAutodelay (500); Thread.sleep (2000); R.MouseMove (300, 300); R.Mousepress (inPutevent.Button1_Mask); r.MoUSerElease (inPutevent.Button1_MASK); R.KeyPress (KeyEvent.vk_Control); R.KeyPress (keyEvent.vk_v); R.KeyReLease (keyEvent.vk_control); R.KeyReLease (keyEvent.vk_v); } / ** * Capture la pantalla completa Moo * * @param r * @return * / public icon CaptureFullScreen (Robot R) {BufferedImage FullSeNImage = R.CreateScreencapture (nuevo rectángulo (Toolkit.getDefaultToolkit (). GetSCreenSize ())); Icon de Imageicon = nuevo Imageicon (FullScreenImage); icono de regreso; } / ** * Capture un área ortopédica de la pantalla * * @param r * @param x * x posición coordinada * @param y * y coordenada posición * @param ancho * ancho del rectángulo * @param altura * altura del rectángulo * @return * / public icon CaptureStarScreen (Robot R, int x, int y, intench, intdtth); BufferedImage FullSeNImage = R.CreateScreencapture (nuevo rectángulo (ancho, altura)); Icon de Imageicon = nuevo Imageicon (FullScreenImage); icono de regreso; }}Antes del ejemplo, preste atención a cómo determinar la posición de coordenadas de la pantalla. Descargué un gadget, que es muy conveniente de usar. Se recomienda que lo use.
1. Prueba simulada simple
paquete com.alexia; import java.awt.*; import java.awt.event.*; import javax.swing.JOptionPane; public class SimpleTest {public static void main (string [] args) lanza la excepción {final robot rb = new Robot (); new Thread () {public void run () {rb.delay (2000); // simular el retorno del carro rb.keypress (keyEvent.vk_enter); rb.KeyReLease (keyEvent.vk_enter); } }.comenzar(); rb.delay (3000); // Establecer la posición aproximada del menú de inicio int x = 40; int y = toolkit.getDefaultToolkit (). GetsCreensize (). Altura - 10; // mover el mouse al menú Inicio, rb.mousemove (x, y); rb.delay (500); // Haga clic en el menú de inicio Common.ClicklMouse (RB, X, Y, 500); rb.delay (1000); // Ejecute el comando cmd cmd ingrese int [] ks = {keyevent.vk_c, keyevent.vk_m, keyevent.vk_d, keyevent.vk_enter,}; Common.PressKeys (RB, KS, 500); RB.MouseMove (400, 400); rb.delay (500); // Ejecute el comando Dir DIR Enter KS = new int [] {keyEvent.vk_d, keyEvent.vk_i, keyevent.vk_r, keyevent.vk_enter}; Common.PressKeys (RB, KS, 500); rb.delay (1000); // Ejecute el comando CLS CLS Enter ks = new int [] {keyevent.vk_c, keyevent.vk_l, keyevent.vk_s, keyevent.vk_enter}; Common.PressKeys (RB, KS, 500); rb.delay (1000); // Ejecute el comando de salida EXIT ENTER ks = new int [] {keyEvent.vk_e, keyevent.vk_x, keyEvent.vk_i, keyEvent.vk_t, keyevent.vk_enter}; Common.PressKeys (RB, KS, 500); rb.delay (1000); // Haga clic derecho para probar x = Toolkit.getDefaultToolkit (). GetsCreensize (). Ancho - 50; Common.ClickrMouse (RB, X, Y, 500); new Thread () {public void run () {rb.delay (1000); // ingresar rb.keypress (keyEvent.vk_enter); rb.KeyReLease (keyEvent.vk_enter); } }.comenzar(); JOptionPane.ShowMessEdialog (NULL, "¡La demostración ha terminado!"); }} 2. Haga clic en NetEase publicidad para obtener una ganancia escasa
paquete com.alexia; import java.awt.awtexception; import java.awt.desktop; import java.awt.robot; import java.awt.event.keyevent; import java.io.ioException; import java.net.uri; import java.util.random; Autoclickads de clase pública {robot privado robot; parada booleana volátil privada = falso; / ** Crea una nueva instancia de Main*/ public AutoClickads () {try {robot = new Robot (); } catch (awtexception ex) {ex.printstackTrace (); }} public void init () {robot.delay (3000); System.out.println ("Haga clic en anuncios de inicio"); // Abra la URL especificada en una nueva ventana del navegador o en una ventana del navegador existente (JDK 1.6 o superior) Desktop Desktop = Desktop.getDeskTop (); if (Desktop.isDeskTOpSupported () && Desktop.issupported (Desktop.action.browse)) {uri uri = uri.create ("http://lanxuezaipiao.blog.163.com/"); intente {Desktop.browse (URI); } Catch (ioException e) {// tODO Auto Generated BLOCK E.PrintStackTRace (); }} try {run (); } Catch (InterruptedException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } detener(); System.out.println ("Haga clic en anuncios detenidos"); } public void run () lanza interruptedException {int count = 1; while (! stop) {robot.delay (8000); int x = 576; int y = 567; Random r = new Random (); Common.ClicklMouse (Robot, X, Y, 3000); // Ingrese la flecha hacia abajo para realizar la página girar int [] ks = {keyevent.vk_down}; para (int i = 0; i <10; i ++) común.presskeys (robot, ks, 0); int [] [] a = {{500, 103}, {500, 163}, {500, 223}, {500, 283}, {500, 343}, {500, 403}, {500, 463}, {500, 523}, {500, 583}, {500, 643},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}. int b = R.NextInt (5); x = a [b] [0]; y = a [b] [1]; Common.ClicklMouse (Robot, X, Y, 1000); // Ingrese la flecha hacia abajo para lograr el giro de la página para (int i = 0; i <500; i ++) Common.PressKeys (Robot, Ks, 0); // Ingrese la flecha hacia abajo para lograr la página girar int [] kups = {keyevent.vk_up}; para (int i = 0; i <3; i ++) común.presskeys (robot, kups, 0); x = 900; y = 210; Common.ClicklMouse (Robot, X, Y, 3000); x = 1090; y = 15; Common.ClicklMouse (Robot, X, Y, 3000); x = 900; y = 135; Common.ClicklMouse (Robot, X, Y, 3000); System.out.println ("Haga clic con éxito en" + Count + "Anuncios!"); }} public sincronizado vacío stop () {stop = true; } / ** * * @param args Los argumentos de la línea de comandos * * @throws interruptedException * / public static void main (string [] args) lanza interruptedException {autoclickads mc = new AutOclickads (); mc.init (); }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.