用java中的机器人方法在另一个程序中写入短语(字符串)

问题描述 投票:0回答:1

嗨,我想编写一个程序,该程序应该在另一个程序中编写一个短语(我的意思是,例如我想打开 TextEdit 并编写一个短语)。 我知道如何打开另一个程序

File file = new File("/Applications/TextEdit.app");
Desktop.getdesktop().open(file);

我知道如何用机器人方法按下键盘上的按键

Robot robot = new Robot();
robot.keypress(KeyEvent.VK_G)

正如你所看到的,这段代码写的是一个字母而不是短语 最大的问题是这个方法不支持 ASCII 码。

例如如果'a'的ASCII码是98,当我将98作为参数写入Robot方法时

robot.keypress(98);

它会打印另一封信。

那么我应该怎么做才能用java代码在另一个程序中写一个短语呢?

java macos awtrobot
1个回答
0
投票

假设您的操作系统是 Mac OS,以下是对给定角色的操作方法:

char c = 'a';
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_MINUS);
robot.keyRelease(KeyEvent.VK_MINUS);
for (int i = 3; i >= 0; i--) {
    char current = Integer.toHexString((c & 15 << (4 * i)) >> (4 * i)).charAt(0);
    int keyCode;
    switch (current) {
        case 'a':
            keyCode = KeyEvent.VK_A;
            break;
        case 'b':
            keyCode = KeyEvent.VK_B;
            break;
        case 'c':
            keyCode = KeyEvent.VK_C;
            break;
        case 'd':
            keyCode = KeyEvent.VK_D;
            break;
        case 'e':
            keyCode = KeyEvent.VK_E;
            break;
        case 'f':
            keyCode = KeyEvent.VK_F;
            break;
        case '0':
            keyCode = KeyEvent.VK_0;
            break;
        case '1':
            keyCode = KeyEvent.VK_1;
            break;
        case '2':
            keyCode = KeyEvent.VK_2;
            break;
        case '3':
            keyCode = KeyEvent.VK_3;
            break;
        case '4':
            keyCode = KeyEvent.VK_4;
            break;
        case '5':
            keyCode = KeyEvent.VK_5;
            break;
        case '6':
            keyCode = KeyEvent.VK_6;
            break;
        case '7':
            keyCode = KeyEvent.VK_7;
            break;
        case '8':
            keyCode = KeyEvent.VK_8;
            break;
        case '9':
            keyCode = KeyEvent.VK_9;
            break;
        default:
            throw new IllegalArgumentException("Unexpected character: " + current);
    }
    robot.keyPress(keyCode);
    robot.keyRelease(keyCode);
}
robot.keyRelease(KeyEvent.VK_ALT);
© www.soinside.com 2019 - 2024. All rights reserved.