我正在尝试使用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.感谢任何帮助!
答案 0 :(得分:6)
有一个Windows Dev Center thread讨论了这个问题。显然,Windows 8中的规则已经改变。
除非应用程序是具有UiAccess
权限的辅助技术应用程序,否则不能保证键盘输入的模拟可以在Shell中触发响应,除非应用程序是具有%ProgramFiles%
权限的辅助技术应用程序。
“辅助功能应用程序可以使用SendInput注入击键 对应于由...处理的应用程序启动快捷键 贝壳。此功能不保证适用于其他功能 应用程序类型。“ - Send Input Function (Windows)
必须满足以下要求:
- 签名
- 安装在
下%SystemRoot%\system32
或uiAccess='true'
- 在清单
中指定SYSTEM
- 在{{1}}或当前登录的用户
下运行
答案 1 :(得分:2)
我找到了解决方法。我按照this网站上的说明创建了 ALT + TAB 菜单的快捷方式,然后使用
Runtime.getRuntime().exec("cmd \c start " + <path\to\shortcut\>);
启动 ALT + TAB 菜单,没有任何特殊的UIAccess权限。感谢大家的回复。