重新映射的命令仅适用于某些窗口

时间:2013-09-06 22:04:05

标签: autohotkey

我有一个新的键盘,它有一个分割空格键,左拇指上的退格键,右拇指上的空格。在使用此键盘之前,我使用快捷键 Ctrl + Alt + Space 打开Launchy。 使用这个新键盘,我还希望能够使用 Ctrl + Alt + Backspace

我将以下映射添加到AutoHotKey

^!BS::
MsgBox Working
SendInput ^!{Space}
return

如果我打开某些窗口(比如Notpad),按 Ctrl + Alt + Backspace 会显示消息框,然后启动程序符合预期(Launchy绑定到 Ctrl + Alt + Space 由它自己的选项UI东西控制)。但是,某些窗口(例如Powershell)似乎吞下了SendInput部分,因此我将看到消息框,但Launchy将无法打开。

如何让AutoHotKey将其命令发送到常规消息队列而不是活动窗口。

注意:我已经尝试过使用各种不同的组合,但它似乎不起作用。

编辑:感谢MCL建议使用WinActivate,这使我朝着正确的方向前进。以下详细信息

解决方案:

^!BS::
DetectHiddenWindows, on
WinActivate, Launchy
SendInput ^!{Space}
return

出于某种原因,某些应用程序吞下了AHK生成的键盘快捷键。因此Launchy从未接收过它们并且没有发布。但是,DetectHiddenWindowsWinActivate后跟常规键盘快捷键似乎有效。

1 个答案:

答案 0 :(得分:0)

使用本机AHK代码激活窗口通常是更好的选择,而不是在某处发送密钥。 WinActivate会做你想做的事。但是,您必须为窗口选择合适的标识符。用Window Spy检查窗口;通常,窗口类(ahk_class)是一个不错的选择。如果您的应用程序只有一个窗口,AHK_L的ahk_exe也将是一个不错的选择。

您的代码可能如下所示:

!BS::WinActivate, ahk_exe launchy.exe