Autohotkey 自动热键-不满足条件时发送默认行为

Autohotkey 自动热键-不满足条件时发送默认行为,autohotkey,Autohotkey,在自动热键中,如果Foxit Reader处于活动状态,如何使NumpadDot双击,否则发送正常的NumpadDot 我的(失败的)尝试: 您不必有else语句: NumpadDot:: SetTitleMatchMode 2 ; allow partial titles IfWinActive, Foxit Click 2 return 好吧,我会这样做: SetTitleMatchMode 2 ; allow partial titles #IfWinAct

在自动热键中,如果Foxit Reader处于活动状态,如何使NumpadDot双击,否则发送正常的NumpadDot

我的(失败的)尝试:


您不必有else语句:

 NumpadDot::
     SetTitleMatchMode 2 ; allow partial titles
     IfWinActive, Foxit
 Click 2

return 

好吧,我会这样做:

SetTitleMatchMode 2 ; allow partial titles

#IfWinActive, Foxit ; Any hotkeys defined between #IfWInActive ONLY works in Foxit
  NumpadDot::Click 2
#IfWinActive

哦,顺便说一句,无休止的循环是因为你的Send,{NumPadDot}启动了你自己的脚本。如果您想防止在热键前面放置$NumpadDot::

我推荐@RobertIlbrink的答案,但这里有另一种方法

$NumpadDot::
IfWinActive, Foxit
    Click 2
else
    SendInput {NumpadDot}
return
$
防止AutoHotkey将发送的击键(通过发送命令)与用户的按键混淆。如果我们不这样做,我们会得到一个无限循环

我通过“SendPlay”解决了这个问题,在这个例子中,我有两个键盘,所以我使用键盘1中的{tab}对Windows执行{RAlt}{tab},我使用主键盘中的{tab}执行常规操作

Tab::
  getKeyboardID()               ; AHKHID based routine
  if(kbID = keyboard1){
    send, {Ralt Down}{Tab}{RAlt Up}
  } Else {
   SendPlay {Tab}               ; here the solution
  }
Return

当我复制并粘贴到自动热键并重新加载脚本,然后转到记事本并按数字键盘上的句号时,不会出现句号。如何使句号出现?效果很好。谢谢我避免了这种方法,可能是错误的,因为性能原因:每个按下的键都必须评估Foxit是否处于活动状态,而不是首先评估按下的键。我做了一个小编辑,以澄清只有热键受
#IfWinActive
的影响。其他代码仍将运行,没有任何效果。
Tab::
  getKeyboardID()               ; AHKHID based routine
  if(kbID = keyboard1){
    send, {Ralt Down}{Tab}{RAlt Up}
  } Else {
   SendPlay {Tab}               ; here the solution
  }
Return