【发布时间】:2013-09-11 02:44:14
【问题描述】:
我有一个新键盘,它有一个分隔空格键,左手拇指上的退格键,右手拇指上的空格键。在拿到这个键盘之前,我使用快捷键 Ctrl+Alt+Space 来打开 Launchy。 有了这个新键盘,我还希望能够使用 Ctrl+Alt+Backspace。
我在 AutoHotKey 中添加了以下映射
^!BS::
MsgBox Working
SendInput ^!{Space}
return
如果我打开了某些窗口(比如 Notpad),按 Ctrl+Alt+Backspace 会显示消息框,然后启动程序按预期进行(启动绑定到 Ctrl+Alt+Space 由它自己的选项 UI 内容控制)。但是,某些窗口(例如 Powershell)似乎吞下了 SendInput 部分,所以我会看到消息框,但 Launchy 不会打开。
如何让 AutoHotKey 将其命令发送到常规消息队列而不是活动窗口。
注意:我已经尝试过使用各种不同的组合,但似乎不起作用。
编辑:感谢 MCL 建议 WinActivate 引导我朝着正确的方向前进。详情如下
解决办法:
^!BS::
DetectHiddenWindows, on
WinActivate, Launchy
SendInput ^!{Space}
return
出于某种原因,某些应用程序正在吞噬 AHK 生成的键盘快捷键。所以 Launchy 从来没有收到过它们,也没有启动。但是,DetectHiddenWindows 和 WinActivate 后跟常规键盘快捷键似乎可以工作。
【问题讨论】:
-
玩转
#UseHook和#InstallKeybdHook的组合。将它们放在脚本的顶部。另外,您可以考虑像Run, path\to\launchy.exe一样直接运行它。 -
与下面的评论相同,但这不是启动应用程序的快捷方式,它是应用程序中定义的热键,可以使其聚焦。该应用程序已在运行,并已最小化到托盘中。
-
改用WinActivate怎么样?
-
成功!...有点。所以我设法让它工作,WinActivate 是重要的一步。 :) 如果您提交答案,我会将其标记为正确。
-
很高兴听到。但听起来并不是所有的东西都被切割和干燥。如果您想了解其他信息,请发布新问题或在 cmets 中提问。
标签: autohotkey