Oft hoffen wir, automatische Tests, automatische Demonstrationsfunktionen oder andere Maus- und Tastatursteuerungsanwendungen zu implementieren (z. B. Menschen dabei helfen, auf Werbung zu klicken, um Gewinne zu erzielen usw.). Zu diesem Zweck hat es uns seit JDK1.3 einen Roboter zur Verfügung gestellt, der native Eingangsereignisse erzeugt - java.awt.robot.
Im Folgenden werde ich die Funktionen und Anwendungsbeispiele von Roboter ausführlich vorstellen:
1. Die Hauptfunktionen des Roboters
1.. Bufferedimage CreateScreencapture (Rechteck ScreenRect)
HINWEIS: Diese Methode bietet eine Funktion, die der Print -Screen -Taste auf der Tastatur ähnelt und die Bildschirmpixel im angegebenen rechteckigen Bereich kopiert, um eine gepufferte Ausführung zu erzeugen.
Anwendung: Wir können diese Methode in einem Grafikprogramm verwenden oder sie verwenden, um die Remote -Bildschirmübertragung zu realisieren, die zu einem Remote -Computerüberwachungsprogramm usw. gemacht werden kann.
2. Void Delay (int ms)
Beschreibung: Wird verwendet, um das aktuelle Programm (Thread) für mehrere Millisekunden (MS) zu schlafen.
Anwendung: Kann verwendet werden, um die Programmverzögerung zu kontrollieren. Dies ist im Allgemeinen notwendig, da Sie in den beiden Intervallvorgängen definitiv eine Verzögerung haben.
3. Farb GetPixelColor (int x, int y)
Beschreibung: Holen Sie sich den Farbwert der Pixelposition der angegebenen Bildschirmkoordinaten.
Anwendung: Nehmen Sie einfach den Farb -RGB -Wert, also sage ich nicht viel.
4. Void TastePress (INT -Schlüsselcode)
void keyRelease (int keycode)
Hinweis: Sie können die Funktionen dieser beiden Methoden auf einen Blick sehen. Die Taste -Drücken- und Hebemaktionen, die zur Generierung der angegebenen Taste verwendet werden, entsprechen der Funktion der KeyB_Event der Win32 -API, dh zum Simulieren von Tastaturvorgängen. Die spezifischen Schlüsselcode -Werte sind keyEvent.vk_c, keyEvent.vk_d, keyEvent.vk_control usw. Bei der Anwendung der spezifischen Anwendung wissen Sie sie, indem Sie sich die Eclipse -Eingabeaufforderung ansehen.
Anwendung: Es kann zur automatischen Demonstration, Tests usw. von Programmen verwendet werden, was sehr nützlich ist.
5. void Mousemove (int x, int y)
Beschreibung: Bewegen Sie den Mauszeiger in die angegebenen Bildschirmkoordinaten.
Anwendung: Es kann zur automatischen Demonstration, Tests usw. des Programms verwendet werden und ist für die Verwendung mit anderen Methoden unverzichtbar.
6. Void MousePress (int -Tasten)
void Mouserelease (int -Tasten)
void Mausrad (int Wheelamt)
HINWEIS: Die obigen drei Methoden erzeugen die Bewegung des angegebenen Maustastens drücken, heben und scrollen, die den Mausbetrieb simuliert. Die spezifischen Schaltflächenwerte umfassen InputEvent.button1_mask (linke Maustaste), inputEvent.button3_mask (rechte Maustaste, wenn es sich um eine Doppel-Taste-Maus handelt, verwenden Sie stattdessen inputEvent.button2_mask).
Anwendung: Es kann auch zur automatischen Demonstration, Tests usw. des Programms verwendet werden. Es ist sehr wichtig, es in Verbindung mit anderen Methoden zu verwenden.
2. Anwendungsbeispiele
Ich habe zwei relativ kleine Anwendungsbeispiele geschrieben, eines ist ein einfacher Simulationstest, und der andere besteht darin, automatisch auf Werbung zu klicken, um Gewinne zu erzielen. Im Folgenden sind Demonstrationen aufgeführt.
Schreiben Sie zuerst einige gemeinsame Methoden Common.java
Paket 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.BuffenedImage; import Javax.swing.icon; import Javax.swing.imageicon; /** * @Description Roboter Hilfeklasse zur Implementierung grundlegender Funktionen * @Author Alexia * @date 2013/5/18 * */public class Common {/** * Mausklick (linksklick), und wenn Sie sich doppelklicken möchten, rufen Sie kontinuierlich an * * @param r * @Param X-Koordinaten-Operation * @param ypoid Position * @Param y y y yko-koordinatsposition * @Param-Abverlust-Ablagerung. ClickLMouse (Robot R, int x, int y, int delay) {r.mousemove (x, y); R.MousePress (InputEvent.button1_mask); R. Delay (10); r.mouserelease (inputEvent.button1_mask); R.Delay (Verzögerung); } / ** * Klicken Sie mit der rechten Maustaste auf die Maus, und wenn Sie sich doppelklicken möchten, rufen Sie kontinuierlich an * * @param r * @param x * x Koordinatenposition * @param y * y Coordinate Position * @param delay * Zeit nach dieser Operation. R.MousePress (InputEvent.Button3_mask); R. Delay (10); r.mouserelease (inputEvent.button3_mask); R.Delay (Verzögerung); } / ** * Tastatureingabe (nur ein Zeichen kann gleichzeitig eingegeben werden) * * @param r * @param ks * Array von Zeichen, die durch Tastatur * @Param Delay * Verzögerungszeit nach Eingabe eines Schlüssels * / public static void presskeys (Robot R, Int [] ks, Int Delay) {für (int i = 0; i); R. Delay (10); R.Keyrelease (KS [i]); R.Delay (Verzögerung); }} / ** * kopieren * * @param r * @throws interruptedException * / void docopy (Robot r) löscht InterruptedException {thread.sleep (3000) aus; R.SetAutodelay (200); R.Keypress (keyEvent.vk_control); R.Keypress (keyEvent.vk_c); R.Keyrelease (keyEvent.vk_control); R.Keyrelease (KeyEvent.vk_c); } / ** * paste * * @param r * @throws interruptedException * / void doparse (Robot r) löst InterruptedException {R.SetAutodelay (500) aus; 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); } / ** * Vollbildmotor erfassen. ImageCon icon = new ImageCon (Vollbildmaterial); Rückkehr -Symbol; } /** * Capture an orthopedic area of the screen* * @param r * @param x * x coordinate position* @param y * y coordinate position* @param width * width of the rectangle* @param height * height of the rectangle* @return */ public Icon capturePartScreen(Robot r, int x, int y, int width, int height) { r.mouseMove(x, y); Bufferedimage fullscreenimage = r.createScreencapture (neues Rechteck (Breite, Höhe)); ImageCon icon = new ImageCon (Vollbildmaterial); Rückkehr -Symbol; }}Achten Sie vor dem Beispiel vor dem Beispiel darauf, wie die Koordinatenposition des Bildschirms bestimmt werden soll. Ich habe ein Gadget heruntergeladen, das sehr bequem zu verwenden ist. Es wird empfohlen, dass Sie es verwenden.
1. Einfacher Scheintest
Paket com.alexia; import Java.awt.*; import Java.awt.event.*; import Javax.swing.joptionpane; öffentliche Klasse Simpleetest {public static void main (String [] args) löst eine Ausnahme aus {endgültig Roboter rb = new Robot (); neuer Thread () {public void run () {rb.delay (2000); // Simulation der Kutsche return rb.keypress (keyEvent.vk_enter); rb.keyrelease (KeyEvent.vk_enter); } }.Start(); rb.delay (3000); // Setzen Sie die ungefähre Position des Startmenüs Int x = 40; int y = Toolkit.getDefaulttoolkit (). GetCreenSize (). Höhe - 10; // Verschieben Sie die Maus in das Startmenü, rb.mousemove (x, y); rb.delay (500); // Klicken Sie auf das Menü Start Common.clicklmouse (RB, X, Y, 500); rb.delay (1000); // Ausführen des CMD -Befehls cmd eingeben 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); // Die DIR -Befehlsbefehls -DIR -Eingabetaste ks = new int [] {keyEvent.vk_d, keyEvent.vk_i, keyEvent.vk_r, keyEvent.vk_enter}; Common.presskeys (RB, KS, 500); rb.delay (1000); // Ausführen des CLS -Befehls CLS Geben Sie ks = new int [] {keyEvent.vk_c, keyEvent.vk_l, keyEvent.vk_s, keyEvent.vk_enter} ein; Common.presskeys (RB, KS, 500); rb.delay (1000); // den Befehl exits beenden ausführen 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); // mit der rechten Maustaste klicken, um x = Toolkit.getDefaulttoolkit () zu testen. GetCreenSize (). Breite - 50; Common.clickrmouse (RB, X, Y, 500); neuer Thread () {public void run () {rb.delay (1000); // rb.keypress (keyEvent.vk_enter) eingeben; rb.keyrelease (KeyEvent.vk_enter); } }.Start(); Joptionpane.showmessagedialog (null, "Demo ist vorbei!"); }} 2. Klicken Sie auf NetEase -Werbung, um einen mageren Gewinn zu erzielen
Paket com.alexia; import Java.awt.awtexception; Import Java.awt.Desktop; import Java.awt.robot; Import Java.awt.event.KeyEvent; importieren java.io.ioException; importieren java.net.uri; import Java.util.random; Public Class Autoclickads {privater Roboter -Roboter; privates volatiles Boolean Stop = False; / ** Erstellt eine neue Instanz von Main*/ public autoclickads () {try {Robot = new Robot (); } catch (awtexception ex) {ex.printstacktrace (); }} public void init () {Robot.Delay (3000); System.out.println ("Anzeigen klicken"); // Öffnen Sie die angegebene URL in einem neuen Browserfenster oder einem vorhandenen Browserfenster (JDK 1.6 oder höher) Desktop Desktop = Desktop.getDesktop (); if (desktop.isdesktopsupported () && desktop.issupported (Desktop.Action.browse)) {uri uri = uri.create ("http://lanxuezaipiao.blog.163.com/"); probieren {Desktop.Browse (URI); } catch (ioException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); }} try {run (); } catch (InterruptedException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } stoppen(); System.out.println ("Anzeigen klicken"); } public void run () löscht InterruptedException {int count = 1; while (! stop) {Robot.Delay (8000); int x = 576; int y = 567; Random r = neu random (); Common.clicklmouse (Roboter, X, Y, 3000); // Geben Sie den Down -Pfeil ein, um die Seite zu realisieren, wende int [] ks = {keyEvent.vk_down}; für (int i = 0; i <10; i ++) Common.presskeys (Roboter, 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 (Roboter, x, y, 1000); // Geben Sie den Down -Pfeil ein, um die Seitenwende für (int i = 0; i <500; i ++) Common.presskeys (Roboter, ks, 0); // Geben Sie den Down -Pfeil ein, um die Seite zu erzielen, um int [] kups = {keyEvent.vk_up}; für (int i = 0; i <3; i ++) Common.presskeys (Roboter, Kups, 0); x = 900; y = 210; Common.clicklmouse (Roboter, X, Y, 3000); x = 1090; y = 15; Common.clicklmouse (Roboter, X, Y, 3000); x = 900; y = 135; Common.clicklmouse (Roboter, X, Y, 3000); System.out.println ("erfolgreich geklickt" + count + "Anzeigen!"); }} public synchronisierte void stop () {stop = true; } / ** * * @param args die Befehlszeilenargumente * * @Throws InterruptedException * / public static void main (String [] args) löst InterruptedException aus {autoclickads mc = new AutoClickads (); Mc.init (); }}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.