Comment faire un Robot de type a`:'?

je veux taper : en utilisant le Robot Java. Cependant, je reçois un IllegalArgumentException . Mon code est:

robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_COLON);
robot.keyRelease(KeyEvent.VK_COLON);
robot.keyRelease(KeyEvent.VK_SHIFT);

l'exception est:

java.lang.IllegalArgumentException: Invalid key code.].

j'ai aussi essayé avec:

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

comment résoudre ce problème?

7
demandé sur Jason Plank 2011-04-21 00:18:27

8 réponses

essayez avec ce code :

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

Comme avec le clavier, vous entrez : lorsque vous appuyez sur maj + ;. la même chose que vous devez simuler.

essayez d'exécuter ce code juste pour essayer ce qui fonctionne très bien avec la réponse ci-dessus:

public class Test {
    public static void main(String[] args) {
        Robot robot;
        try {
            robot = new Robot();
            robot.keyPress(KeyEvent.VK_SHIFT);  
            robot.keyPress(KeyEvent.VK_SEMICOLON);  
            robot.keyRelease(KeyEvent.VK_SEMICOLON);  
            robot.keyRelease(KeyEvent.VK_SHIFT);
        } catch (AWTException e) {
            // TODO Auto-generated catch bloc
            e.printStackTrace();
        }


    }
}
14
répondu GuruKulki 2011-04-20 21:01:46

malheureusement, la classe Java Robot repose sur une implémentation spécifique à une plate-forme d'une interface non documentée appelée java.awt.peer.RobotPeer . La mise en œuvre spécifique de la plate-forme détermine quels événements clés de la presse sont légaux ou illégaux.

sur mon windows XP box, cela fonctionne très bien:

public static void main(final String[] args) throws InterruptedException, IOException {
    Robot robot;
    try {
        robot = new Robot();
        robot.keyPress(KeyEvent.VK_SHIFT);
        robot.keyPress(KeyEvent.VK_SEMICOLON);
        robot.keyRelease(KeyEvent.VK_SEMICOLON);
        robot.keyRelease(KeyEvent.VK_SHIFT);
    } catch (final AWTException e) {
        // TODO Auto-generated catch bloc
        e.printStackTrace();
    }
}

sur une plateforme différente vous pouvez essayer:

public static void main(final String[] args) throws InterruptedException, IOException {
    Robot robot;
    try {
        robot = new Robot();
        robot.keyPress(KeyEvent.VK_COLON);
        robot.keyRelease(KeyEvent.VK_COLON);
    } catch (final AWTException e) {
        // TODO Auto-generated catch bloc
        e.printStackTrace();
    }
}
3
répondu Tim Bender 2011-04-20 21:18:36

essayez ce code ;), peut-être qu'il aide (en utilisant le code ASCII alt+5+8=:):

robot9.delay(20);
robot9.keyPress(KeyEvent.VK_ALT);
robot9.delay(20);
robot9.keyPress(KeyEvent.VK_NUMPAD5);
robot9.keyRelease(KeyEvent.VK_NUMPAD5);
robot9.delay(20);
robot9.keyPress(KeyEvent.VK_NUMPAD8);
robot9.keyRelease(KeyEvent.VK_NUMPAD8);
robot9.delay(20);
robot9.keyRelease(KeyEvent.VK_ALT);
robot9.delay(20);
2
répondu Misose 2014-06-16 13:29:24

Essayez Ce Code


        case KeyEvent.VK_SEMICOLON:
            if((event.getModifiers() & KeyEvent.KEY_PRESSED)!=0)
               System.out.println(":");
            else
                System.out.print(";");
            break;
1
répondu Nirav Dabhi 2014-03-07 12:38:25

cela semble aussi dépendre de la langue. Sur un clavier allemand, en utilisant la combinaison de VK_SHIFT et VK_PERIOD travaillé.

1
répondu Thomas Weller 2015-06-22 14:05:15

Je ne sais pas pour les Robots Java, mais si vous utilisez shift, vous ne devriez pas alors taper semicolon, parce que shift + semicolon = colon. Donc c'est probablement un argument illégal parce que colon n'est pas une clé, le point-virgule l'est.

0
répondu None 2011-04-20 20:22:30

quelqu'un a construit une classe KeyboardKeys et l'a publié ici dans SO. son à https://stackoverflow.com/a/20979488/7069565 . En un mot, il tape chaque caractère comme une combinaison Alt + nombre.

0
répondu Omar N 2017-05-23 10:30:48

le point-virgule est un "Lettres majuscules", c'est-à-dire que vous ne l'obtenez qu'avec la combinaison des touches

Shift+Coma

essayez ceci:

robot = new Robot();
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_COMMA);
//Since you have the Shift pressed it will generate a semi colon.
robot.keyRelease(KeyEvent.VK_COMMA);
robot.keyRelease(KeyEvent.VK_SHIFT);

j'espère avoir aidé.

bonne journée. :)

0
répondu Saclyr Barlonium 2016-10-28 12:08:01