【问题标题】:Remapped Commands only work in some windows重新映射的命令仅适用于某些窗口
【发布时间】: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 从来没有收到过它们,也没有启动。但是,DetectHiddenWindowsWinActivate 后跟常规键盘快捷键似乎可以工作。

【问题讨论】:

  • 玩转#UseHook#InstallKeybdHook 的组合。将它们放在脚本的顶部。另外,您可以考虑像Run, path\to\launchy.exe 一样直接运行它。
  • 与下面的评论相同,但这不是启动应用程序的快捷方式,它是应用程序中定义的热键,可以使其聚焦。该应用程序已在运行,并已最小化到托盘中。
  • 改用WinActivate怎么样?
  • 成功!...有点。所以我设法让它工作,WinActivate 是重要的一步。 :) 如果您提交答案,我会将其标记为正确。
  • 很高兴听到。但听起来并不是所有的东西都被切割和干燥。如果您想了解其他信息,请发布新问题或在 cmets 中提问。

标签: autohotkey


【解决方案1】:

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

您的代码可能如下所示:

!BS::WinActivate, ahk_exe launchy.exe

【讨论】:

  • 不这样做的主要原因是我没有关于窗口的任何信息。它不只是在后面,它实际上是隐藏的,所以我可以激活窗口,Window Spy 显示它是活动窗口,但它仍然不可见。我知道它是活动窗口,因为如果我键入并按回车键,命令会按预期执行,我只是看不到窗口。发送键还有一个额外的好处,那就是再次点击快捷方式会关闭窗口,就像我在使用应用程序中配置的快捷方式时所期望的那样。
  • @BenRandall 使用额外的WinShow
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 2012-05-25
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2012-04-03
  • 2018-03-31
相关资源
最近更新 更多