使用Java Robot的Alt + Tab

时间:2013-01-27 16:37:34

标签: java tabs awt awtrobot alt

我正在尝试使用Java Robot启动 alt + 标签 菜单。当我调用alt_tab()方法时,我想调出 alt + 标签 菜单并保持菜单。我知道这可以使用 alt + ctrl + tab 来实现。

到目前为止,我已经尝试了下面的代码,并且只是 alt + tab ,没有控制键。我不知道为什么它没有提出菜单。它只需按下alt键即可模拟。

public void alt_tab() {
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_ALT);
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_TAB);
    robot.delay(100);
    robot.keyRelease(KeyEvent.VK_TAB);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.keyRelease(KeyEvent.VK_ALT);
}

我正在使用Windows 8 Pro和JDK 7.感谢任何帮助!

2 个答案:

答案 0 :(得分:6)

有一个Windows Dev Center thread讨论了这个问题。显然,Windows 8中的规则已经改变。

除非应用程序是具有UiAccess权限的辅助技术应用程序,否则不能保证键盘输入的模拟可以在Shell中触发响应,除非应用程序是具有%ProgramFiles%权限的辅助技术应用程序。

  

“辅助功能应用程序可以使用SendInput注入击键   对应于由...处理的应用程序启动快捷键   贝壳。此功能不保证适用于其他功能   应用程序类型。“ - Send Input Function (Windows)

必须满足以下要求:

  
      
  • 签名
  •   
  • 安装在%SystemRoot%\system32uiAccess='true'
  • 下   
  • 在清单
  • 中指定SYSTEM   
  • 在{{1}}或当前登录的用户
  • 下运行   
     

- Google Groups

答案 1 :(得分:2)

我找到了解决方法。我按照this网站上的说明创建了 ALT + TAB 菜单的快捷方式,然后使用

Runtime.getRuntime().exec("cmd \c start " + <path\to\shortcut\>);

启动 ALT + TAB 菜单,没有任何特殊的UIAccess权限。感谢大家的回复。