Dans le dictionnaire, un robot est «assemblé comme une machine et présente diverses fonctions de mouvement similaires à celles des humains». Cependant, s'il y a un mouvement de type humain non seulement dans le matériel mais aussi dans le logiciel, c'est aussi un robot.
Faisons un robot logiciel pour cette activité!
Java AWT Robot
Il existe différentes plates-formes, mais cette fois, j'utiliserai Java AWT pour le robot logiciel. Java AWT (Abstract Window Toolkit) est une API pour développer des applications GUI ou Windows en Java. Il existe une API Robot dans AWT. Ce robot peut exécuter automatiquement des fonctions en natif de l'OS.
Appuyez sur le clavier:
MyRobot.java
//appuyez sur Entrée
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
Mouvement de la souris:
MyRobot.java
//La souris est la scène X:350,Y:Passer à 400
robot.mouseMove(350,400);
retard:
MyRobot.java
//1 seconde de retard
robot.delay(1000);
NiseAPI
Pour faciliter l'utilisation, j'ai créé ma propre API. "Gratuit" qui peut être forké avec ce lien: https://github.com/CoralBeef-zz/Nise
Ou partagez le code ici:
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) {}
}
}
Pour échantillonner, je suis un programme qui peut publier automatiquement sur Twitter. Essayez-le vous-même.
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);
Avec une fonctionnalité aussi simple, c'est une tâche automatique basée sur le système d'exploitation, et les possibilités sont nombreuses.
J'ai hâte de faire des choses plus créatives avec ça!
Recommended Posts