3

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

我的(破碎的)尝试:

NumpadDot::
  SetTitleMatchMode 2 ; allow partial titles
  IfWinActive, Foxit
      Click 2
  else
      Send {NumpadDot} ; THIS CREATES AN ENDLESS LOOP!
Return
4

4 回答 4

4

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

$NumpadDot::
IfWinActive, Foxit
    Click 2
else
    SendInput {NumpadDot}
return

$可以防止 AutoHotkey 将发送的击键(通过发送命令)与用户的按键混淆。如果我们不这样做,我们将得到一个无限循环。

于 2013-04-06T13:48:01.390 回答
2

好吧,我会这样做:

SetTitleMatchMode 2 ; allow partial titles

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

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

于 2013-04-05T18:23:32.707 回答
1

我已经通过“SendPlay”解决了这个问题,在这个例子中我有 2 个键盘,所以我使用键盘 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
于 2019-12-06T08:48:30.913 回答
0

你不必有 else 语句:

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

return 
于 2013-04-05T18:11:53.617 回答