Lass uns einen Roboter bauen! "Eine einfache Demo von Java AWT Robot"

Roboter

Im Wörterbuch wird ein Roboter "als Maschine zusammengebaut und weist verschiedene Bewegungsfunktionen auf, die denen des Menschen ähnlich sind". Wenn es jedoch nicht nur in der Hardware, sondern auch in der Software eine menschenähnliche Bewegung gibt, handelt es sich auch um einen Roboter.

Lassen Sie uns einen Software-Roboter für diese Aktivität erstellen!

Java AWT Robot

Es gibt verschiedene Plattformen, aber dieses Mal werde ich Java AWT für den Softwareroboter verwenden. Java AWT (Abstract Window Toolkit) ist eine API zum Entwickeln von GUI- oder Windows-basierten Anwendungen in Java. In AWT gibt es eine Roboter-API. Dieser Roboter kann automatisch Funktionen in Native des Betriebssystems ausführen.

Wie man den Roboter benutzt

Tastendruck:

MyRobot.java


//Drücken Sie Enter
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);

Mausbewegung:

MyRobot.java


//Maus ist die Szene X.:350,Y:Gehen Sie zu 400
robot.mouseMove(350,400);

verzögern:

MyRobot.java


//1 Sekunde Verzögerung
robot.delay(1000);

NiseAPI

Zur Vereinfachung habe ich meine eigene API erstellt. "Kostenlos", das über diesen Link gegabelt werden kann: https://github.com/CoralBeef-zz/Nise

Oder teilen Sie den Code hier:

NiseRobot.java


import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;

public class NiseRobot extends Robot {


    public NiseRobot() throws AWTException {}

    public void delayedKeyPress(int keyToPress) {
        delayedKeyPress(keyToPress,500);
    }

    public void delayedKeyPress(int keyToPress, int delay_time) {
        delay(delay_time);
        keyPress(keyToPress);
        keyRelease(keyToPress);
    }

    public void instantType(String text) {
        StringSelection stringSelection = new StringSelection(text);
        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
        clipboard.setContents(stringSelection, stringSelection);

        keyPress(KeyEvent.VK_CONTROL);
        keyPress(KeyEvent.VK_V);
        keyRelease(KeyEvent.VK_V);
        keyRelease(KeyEvent.VK_CONTROL);
    }

    public void waitFor(int delay_in_milliseconds) {
        try {
            Thread.sleep(delay_in_milliseconds);
        } catch(InterruptedException ioe) {}
    }

    public void mouseGlide(int x1, int y1, int x2, int y2, int t, int n) {
        try {
            double dx = (x2 - x1) / ((double) n);
            double dy = (y2 - y1) / ((double) n);
            double dt = t / ((double) n);
            for (int step = 1; step <= n; step++) {
                Thread.sleep((int) dt);
                mouseMove((int) (x1 + dx * step), (int) (y1 + dy * step));
            }
        } catch (InterruptedException e) {}
    }
}

TwitterBot-Beispiel

Zum Beispiel bin ich ein Programm, das automatisch auf Twitter posten kann. Versuch es selber.

Nise.start()


String tweet = JOptionPane.showInputDialog(new JFrame("NameFrame"), "What do you want to tweet?");

        robot.delayedKeyPress(KeyEvent.VK_WINDOWS);

        robot.delayedKeyPress(KeyEvent.VK_C);
        robot.delayedKeyPress(KeyEvent.VK_H);
        robot.delayedKeyPress(KeyEvent.VK_R);
        robot.delayedKeyPress(KeyEvent.VK_O);
        robot.delayedKeyPress(KeyEvent.VK_M);
        robot.delayedKeyPress(KeyEvent.VK_E);

        robot.delayedKeyPress(KeyEvent.VK_ENTER);

        robot.mouseGlide(500,500, 600, 60, 8, 1000);
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);


        robot.delayedKeyPress(KeyEvent.VK_H);
        robot.delayedKeyPress(KeyEvent.VK_T);
        robot.delayedKeyPress(KeyEvent.VK_T);
        robot.delayedKeyPress(KeyEvent.VK_P);
        robot.delayedKeyPress(KeyEvent.VK_S);

        //Colon
        robot.keyPress(KeyEvent.VK_SHIFT);
        robot.keyPress(KeyEvent.VK_SEMICOLON);
        robot.keyRelease(KeyEvent.VK_SEMICOLON);
        robot.keyRelease(KeyEvent.VK_SHIFT);

        robot.delayedKeyPress(KeyEvent.VK_SLASH);
        robot.delayedKeyPress(KeyEvent.VK_SLASH);
        robot.delayedKeyPress(KeyEvent.VK_T);
        robot.delayedKeyPress(KeyEvent.VK_W);
        robot.delayedKeyPress(KeyEvent.VK_I);
        robot.delayedKeyPress(KeyEvent.VK_T);
        robot.delayedKeyPress(KeyEvent.VK_T);
        robot.delayedKeyPress(KeyEvent.VK_E);
        robot.delayedKeyPress(KeyEvent.VK_R);
        robot.delayedKeyPress(KeyEvent.VK_PERIOD);
        robot.delayedKeyPress(KeyEvent.VK_C);
        robot.delayedKeyPress(KeyEvent.VK_O);
        robot.delayedKeyPress(KeyEvent.VK_M);
        robot.delayedKeyPress(KeyEvent.VK_SLASH);
        robot.delayedKeyPress(KeyEvent.VK_ENTER);

        robot.delayedKeyPress(KeyEvent.VK_ENTER);

        robot.delay(3000);
        robot.mouseGlide(600,60, 750, 230, 8, 1000);
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

        robot.instantType(tweet);

        robot.mouseGlide(750,230, 1250, 360, 8, 1000);

        robot.delay(3000);
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

Fazit

Mit einer so einfachen Funktion ist es eine automatische Aufgabe, die auf dem Betriebssystem basiert, und es gibt viele Möglichkeiten.

Ich freue mich darauf, kreativere Dinge damit zu machen!

Recommended Posts

Lass uns einen Roboter bauen! "Eine einfache Demo von Java AWT Robot"
[Java] Erstellen wir eine DB-Zugriffsbibliothek!
Eine Sammlung einfacher Fragen für Java-Anfänger
Machen Sie "Ich bin kein Roboter" in Java EE (Jakarta EE)
[Java-Grundlagen] Lassen Sie uns ein Dreieck mit einer for-Anweisung erstellen
[Persönliches Memo] Erstellen Sie eine einfache, tiefe Kopie mit Java
[Java] Mach es konstant
[Java] Zeichnen Sie ein einfaches Muster
Machen Sie einen Diamanten mit Java
Erstellen wir eine Taschenrechner-App mit Java ~ Zeigen Sie das Anwendungsfenster an
[Anfänger] Versuchen Sie, mit Java ein einfaches RPG-Spiel zu erstellen ①
Erstellen wir eine einfache API mit EC2 + RDS + Spring Boot ①
Ich habe einen RESAS-API-Client in Java erstellt
Denken Sie an eine Java-Update-Strategie
Lassen Sie uns eine TODO-App in Java 4 erstellen. Implementierung der Buchungsfunktion
Mach eine Sprache! (Einen einfachen Taschenrechner machen ②)
Versuchen Sie, einen einfachen Rückruf zu tätigen
3 Implementieren Sie einen einfachen Interpreter in Java
So erstellen Sie einen Java-Container
Lassen Sie uns eine TODO-App in Java 6 erstellen. Implementierung der Suchfunktion
[Java] Schauen wir uns die Switch-Ausdrücke (Vorschau) von JDK 13 an.
Lassen Sie uns eine TODO-App in Java 8 erstellen. Implementierung von Bearbeitungsfunktionen
Liste der Java-Objekte sortieren
Ein einfaches Beispiel für Rückrufe in Java
Mach eine Sprache! (Einen einfachen Taschenrechner machen ①)
Eine kurze Beschreibung der JAVA-Abhängigkeiten
Erstellen wir eine TODO-Anwendung mit Java 1 Kurze Erläuterung von MVC
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
Lassen Sie uns ein custom_cop erstellen, das auf das Schütteln des Namens hinweist
So erstellen Sie ein Java-Array
Lassen Sie uns das Ergebnis der Analyse von Java-Bytecode in einem Klassendiagramm ausdrücken
Ich war süchtig nach einem einfachen Test von Jedis (Java-> Redis-Bibliothek)
Java-Anfänger haben versucht, mit Spring Boot eine einfache Webanwendung zu erstellen
So erstellen Sie eine Java-Kalenderzusammenfassung
Machen wir eine Weihnachtskarte mit Verarbeitung!
Nennen Sie eine Gruppe regulärer Ausdrücke (Java)
Ein einfaches Beispiel für ArBiMap (Zwei-Wege-Karte)
Lassen Sie uns eine Java-Entwicklungsumgebung erstellen (Aktualisierung)
Wie erstelle ich einen Discord Bot (Java)
[Docker] [Nginx] Erstellen Sie mit Nginx eine einfache ALB
Lassen Sie uns migrieren, um Java komfortabler zu machen
Ein einfaches Beispiel für das MVC-Modell
Lassen Sie uns Force-Graph des Eisenbahnnetzes aus dem öffentlichen Verkehr von Tokio Daten öffnen
Erstellen wir eine Taschenrechner-App mit Java ~ Erstellen Sie einen Anzeigebereich im Fenster
Ich habe versucht, mit Javafx ein einfaches Spiel zu machen ① "Lass uns Glücksspiel finden" (unvollendet)
Ein einfaches Beispiel für ein Servlet, das Japanisch anzeigt
Erstellen Sie mit Java + MySQL ein einfaches Bulletin Board
Benötigen Sie eine speicherbewusste Implementierung von Java?
Lassen Sie uns mit Javas Timer einen zeitgesteuerten Prozess erstellen! !!
Machen Sie einen Rand links vom TextField
Java Ich habe versucht, einen einfachen Block zu brechen
Messen Sie die Größe eines Ordners mit Java
Ich habe Java gemacht, um (a == 1 && a == 2 && a == 3) immer wahr zu machen
Machen wir eine Shopping-Site mit Streifen! (Kauf)
Lassen Sie uns mit Java ein supereinfaches Webframework erstellen
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [Einführung]
Erstellen Sie Scala Seq aus Java, machen Sie Scala Seq zu einer Java-Liste
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Einführung]
Lassen Sie uns eine Suchfunktion mit Rails (Ransack) machen