Сопоставление Excel F2 с другой кнопкой не работает, когда F2 повторно отображается для открытия и применения - PullRequest
0 голосов
/ 11 января 2020

Я сопоставил {F2}, чтобы открыть / запустить «OneNote». Я хочу использовать XButton2, чтобы использовать функцию F2, когда Excel является активным приложением. Однако нажатие кнопки XButton2 всегда активирует OneNote.

Я пытался сделать все, чтобы это работало.

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

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

1 Ответ

0 голосов
/ 11 января 2020

Ваша проблема в том, что вы вызываете горячую клавишу F2, отправляя F2.
Чтобы избежать этого, вы захотите использовать модификатор $ на своей горячей клавише F2, например так:
$F2::
Похоже, у вас это есть на горячей клавише XButton2? Может быть, вы были на правильном пути, но не на той горячей клавише? В любом случае, он ничего не делает для вас, так что вы можете удалить его.
(Альтернатива #UseHook может быть указана где-то выше, так что перехват клавиатуры реализован для каждой горячей клавиши после него)

А теперь несколько разных исправлений в вашем скрипте. В AHK простые повторы на самом деле сделаны так:
XButton2::F2
Сладкая чистая маленькая строчка. (Однолинейные горячие клавиши тоже не нуждаются в return под ними)

Итак, вот ваш готовый продукт:

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

#IfWinActive ahk_class XLMAIN 
XButton2::F2
#IfWinActive

Лично я бы тоже опускал скобки, так как они не требуются для однострочных операторов if. Но это просто предпочтение, конечно. А также не уверен, почему вы набрали return.

...