嗨,我想编写一个程序,该程序应该在另一个程序中编写一个短语(我的意思是,例如我想打开 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代码在另一个程序中写一个短语呢?
假设您的操作系统是 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);