当 F2 重新映射到打开和应用程序时,将 Excel F2 映射到不同的按钮不起作用

Mapping the Excel F2 to a different button does not work when F2 is re-mapped to open and application

我将 {F2} 映射到 open/start "OneNote" 当 Excel 是活动应用程序时,我想使用 XButton2 来执行 F2 的功能。 然而,按下 XButton2 总是会激活 OneNote。

我尽了一切努力来完成这项工作。

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

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

您的问题是您通过发送 F2 触发了 F2 热键。
为避免这种情况,您需要像这样在 F2 热键上使用 $ modifier
$F2::
好像你真的把它放在你的 XButton2 热键上了?也许您走在正确的轨道上,但使用了错误的热键?无论哪种方式,它都不会为您做任何事情,因此您可以将其删除。
(替代 #UseHook 可以在上面的某处指定,因此键盘钩子在它之后的每个热键上实现)

现在对您的脚本进行一些杂项修复。在 AHK 中,简单的 remaps 实际上是这样完成的:
XButton2::F2
甜美干净的小单线。 (一行热键下面也不需要 return

这就是你的成品:

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

#IfWinActive ahk_class XLMAIN 
XButton2::F2
#IfWinActive

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