我怎样才能让机器人输入一个`:`?

我想键入:使用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_SHIFTVK_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); 

我希望我有所帮助。

祝你今天愉快。 🙂