我无法让它工作,无论我使用
快捷键
或者
发送 {Alt 向下}{tab}{Alt 向上}
我可以验证其他命令是否有效,因为我可以让热键显示一个消息框。看来 W8 已经做了足够多的改动,以破坏 AHK 的Alt+Tab钩子。
正在寻找解决方法。我正在尝试将LCtrl+映射Tab到Alt+ Tab(以及它们的 Shift 版本)。
答案1
在可执行文件的嵌入清单中设置 UIAccess=true 似乎可以解决此问题。可执行文件还必须位于受信任的位置,例如 Program Files 文件夹。有关更多信息和为您进行必要修改的脚本,请查找启用UIAccess在 AutoHotkey 论坛上。
感谢 Cliff Smolinsky 在Synergy 问题追踪器:
Windows 8 中实施了许多安全更改,以防止非 Metro 应用注入会将您从 Metro 环境中移除的键。其工作原理是,如果快捷键不是来自物理键盘或具有适当权限的程序,则会被忽略。[...] 为了获得适当的权限,必须使用 UIAccess 构建程序
除了 MSDN 上的以下模糊评论外,我无法通过任何官方来源证实这一点:
辅助功能应用程序可以使用 SendInput 注入与 shell 处理的应用程序启动快捷键相对应的按键。此功能不保证适用于其他类型的应用程序。
答案2
我发现我可以用以下方式发送Alt+ :Tab
F1::发送输入,!{Tab}
换句话说,我必须将“Send”更改为“SendInput”才能使其与 Windows 8 兼容。
答案3
如果您使用的是 AutoHotkey(Basic),其代码库自 2009 年 9 月以来就没有更新过。显然,Windows 8 中的任何根本变化都没有得到解决。AutoHotkey_L更新得更及时,上次更新是本月。然而,变更日志,对 Windows 8 的进一步支持很少。
如果安装 AutoHotkey_L 后你的脚本仍然无法工作,你可以尝试其他发送命令:
- 发送原始数据
- 发送输入
- 发送播放
- 发送事件
否则,您只能耐心等待开发人员添加对 Windows 8 的支持。
答案4
第一个答案给了我一个线索,对我有用(使用Vista)的是:
²::SendEvent, !{Tab}
谢谢!