Java机器人类的自动轮询?

时间:2013-08-28 21:38:12

标签: java awtrobot

嗨我想知道是否有办法通过使用机器人类来制作汽车轮胎? 有没有办法让字符串变成char []并输出每个字母? 无论如何,我可以为每个字母使用一个案例(例如下面的例子)。

        case ' ': key = "VK_SPACE"; shiftOn = false; break;
        case 'a': key = "VK_A"; shiftOn = false;    break;
        case 'b': key = "VK_B"; shiftOn = false;    break;
        case 'c': key = "VK_C"; shiftOn = false;    break;
        case 'd': key = "VK_D"; shiftOn = false;    break;
        case 'e': key = "VK_E"; shiftOn = false;    break;
        case 'f': key = "VK_F"; shiftOn = false;    break;
        case 'g': key = "VK_G"; shiftOn = false;    break;
        case 'h': key = "VK_H"; shiftOn = false;    break;
        case 'i': key = "VK_I"; shiftOn = false;    break;
        case 'j': key = "VK_J"; shiftOn = false;    break;
        case 'k': key = "VK_K"; shiftOn = false;    break;
        case 'l': key = "VK_L"; shiftOn = false;    break;

等...

2 个答案:

答案 0 :(得分:0)

在代码here的帮助下:

    Thread.sleep(2000); // Give me time to open up notepad
    Robot r = new Robot();
    for (char c : "I like playing with fire, and Java.".toCharArray()) {
        int code = KeyEvent.getExtendedKeyCodeForChar(c);
        if (Character.isUpperCase(c))
            r.keyPress(KeyEvent.VK_SHIFT);
        r.keyPress(code);
        r.keyRelease(code);
        if (Character.isUpperCase(c))
            r.keyRelease(KeyEvent.VK_SHIFT);
    }

你需要做更多的工作来获得像!@ $%& *()_ +这样的角色。

答案 1 :(得分:0)

如果您正在使用多种键盘布局,解决方案是使用一些剪贴板操作和按Ctrl + V键来粘贴每个字符;否则,您可能会得到错误的结果,例如无法在巴西键盘中输入斜线(我之前遇到的一个问题)。 如果没有,您可以使用sbat的解决方案。我只是一个解决方法,关键代码在所有键盘中都不一样,但由于这个原因,它的工作速度较慢(我认为)。

public static void paste(String text) throws Exception {
    Robot rob = new Robot(); //Robot for typing
    Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); //Clipboard
    old = (String) c.getData(DataFlavor.stringFlavor); //Clipboard contents before function
    for (int i = 0; i < text.length(); i++) {
        c.setContents(new StringSelection("" + text.charAt(i)), null); //Set clipboard

        //Ctrl + V
        rob.keyPress(KeyEvent.VK_CONTROL); 
            rob.keyPress(KeyEvent.VK_V);
            rob.keyRelease(KeyEvent.VK_V);
        rob.keyRelease(KeyEvent.VK_CONTROL);
    }
    c.setContents(new StringSelection(old), null); //Restore old clipboard contents
}