首页 > 解决方案 > 当 F2 重新映射到打开和应用程序时,将 Excel F2 映射到其他按钮不起作用

问题描述

我将 {F2} 映射到打开/启动“OneNote” 我想在 Excel 是活动应用程序时使用 XButton2 来执行 F2 的功能。但是,按下 XButton2 始终会激活 OneNote。

我尝试了一切来完成这项工作。

F2::
    IF WinExist("ahk_exe ONENOTE.EXE") {
        WinActivate
    }
RETURN

#IfWinActive ahk_class XLMAIN 
$XButton2::
    send {F2}
return
#IfWinActive

标签: autohotkey

解决方案


您的问题是您通过发送 F2 来触发 F2 热键。
为避免这种情况,您需要在 F2 热键上使用$修饰符
$F2::
,如下所示: 看起来您实际上在 XButton2 热键上有它?也许您在正确的轨道上,但使用了错误的热键?无论哪种方式,它都不会为您做任何事情,因此您可以将其删除。
#UseHook可以在上面的某个地方指定替代方案,因此键盘钩子会为之后的每个热键实现)

现在对您的脚本进行了一些杂项修复。在 AHK 中,简单的重映射实际上是这样完成的:
XButton2::F2
Sweet clean little one-liner。(单行热键也不需要return在它们下面)

所以这将是你的成品:

$F2::
    IF WinExist("ahk_exe ONENOTE.EXE") {
        WinActivate
    }
RETURN

#IfWinActive ahk_class XLMAIN 
XButton2::F2
#IfWinActive

我个人也会省略括号,因为单行 if 语句不需要括号。但这当然只是偏好。而且也不知道你为什么要大写return.


推荐阅读