我怎样才能让机器人输入一个`:`?
我想键入:
使用Java Robot。 但是,我收到了IllegalArgumentException
。 我的代码是:
robot.keyPress(KeyEvent.VK_SHIFT); robot.keyPress(KeyEvent.VK_COLON); robot.keyRelease(KeyEvent.VK_COLON); robot.keyRelease(KeyEvent.VK_SHIFT);
例外是:
java.lang.IllegalArgumentException: Invalid key code.].
我也尝试过:
robot.keyPress(KeyEvent.VK_SHIFT); robot.keyPress(KeyEvent.VK_SEMICOLON); robot.keyRelease(KeyEvent.VK_SEMICOLON); robot.keyRelease(KeyEvent.VK_SHIFT);
我怎么解决这个问题?
试试这段代码:
robot.keyPress(KeyEvent.VK_SHIFT); robot.keyPress(KeyEvent.VK_SEMICOLON); robot.keyRelease(KeyEvent.VK_SEMICOLON); robot.keyRelease(KeyEvent.VK_SHIFT);
与您输入的键盘一样:当您按shift + ;. 同样你需要模拟。
尝试运行此代码只是为了尝试哪种方法可以正常使用以上答案:
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(); } } }
遗憾的是,Java Robot
类依赖于一个名为java.awt.peer.RobotPeer
的未记录接口的特定于平台的实现。 特定于平台的实施决定了哪些关键新闻事件是合法的或非法的。
在我的Windows XP盒子上,这很好用:
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(); } }
在不同的平台上,您可能想尝试:
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(); } }
尝试这个代码;),也许它有帮助(使用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);
试试这个代码
case KeyEvent.VK_SEMICOLON: if((event.getModifiers() & KeyEvent.KEY_PRESSED)!=0) System.out.println(":"); else System.out.print(";"); break;
这似乎也取决于语言。 在德语键盘上,使用VK_SHIFT
和VK_PERIOD
的组合工作。
我不知道Java机器人,但是如果你使用shift,那么你不应该输入分号,因为shift +分号=冒号。 所以这可能是一个非法论点,因为冒号不是关键,分号是。
有人构建了一个KeyboardKeys类,并在此处将其发布。 它在https://stackoverflow.com/a/20979488/7069565 。 简而言之,他将每个字符键入为Alt + Number组合。
分号是一个“upercase leter”,也就是说,你只能使用Keys的组合
按住Shift +昏迷
尝试这个:
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);
我希望我有所帮助。
祝你今天愉快。 🙂