使用Java Robot的Alt + Tab

Kah*_*lam 8 java tabs awt awtrobot alt

我正在尝试使用Java Robot 启动alt+tab菜单.当我调用alt_tab()方法时,我想调出alt+tab菜单并保持菜单.我知道这可以用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);
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Windows 8 Pro和JDK 7.任何帮助表示赞赏!

Kon*_*che 6

有一个Windows开发中心线程,讨论这个问题.显然,Windows 8中的规则已经发生了变化.

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

"辅助功能应用程序可以使用SendInput注入与shell处理的应用程序启动快捷键相对应的击键.此功能不能保证适用于其他类型的应用程序." - 发送输入功能(Windows)

必须满足以下要求:

  • 签字
  • 安装在%ProgramFiles%%SystemRoot%\system32
  • uiAccess='true'在清单中指定
  • SYSTEM在当前登录的用户下运行

- Google网上论坛


Kah*_*lam 2

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

Runtime.getRuntime().exec("cmd \c start " + <path\to\shortcut\>);
Run Code Online (Sandbox Code Playgroud)

无需任何特殊的 UIAccess 权限即可启动ALT+TAB菜单。感谢大家的回复。