在 Autohotkey 中,如果 Foxit Reader 处于活动状态,如何使 NumpadDot 双击,否则发送正常的 NumpadDot?
我的(破碎的)尝试:
NumpadDot::
SetTitleMatchMode 2 ; allow partial titles
IfWinActive, Foxit
Click 2
else
Send {NumpadDot} ; THIS CREATES AN ENDLESS LOOP!
Return
在 Autohotkey 中,如果 Foxit Reader 处于活动状态,如何使 NumpadDot 双击,否则发送正常的 NumpadDot?
我的(破碎的)尝试:
NumpadDot::
SetTitleMatchMode 2 ; allow partial titles
IfWinActive, Foxit
Click 2
else
Send {NumpadDot} ; THIS CREATES AN ENDLESS LOOP!
Return
我推荐@RobertIlbrink 的答案,但这是另一种方法。
$NumpadDot::
IfWinActive, Foxit
Click 2
else
SendInput {NumpadDot}
return
这$
可以防止 AutoHotkey 将发送的击键(通过发送命令)与用户的按键混淆。如果我们不这样做,我们将得到一个无限循环。
好吧,我会这样做:
SetTitleMatchMode 2 ; allow partial titles
#IfWinActive, Foxit ; Any hotkeys defined between #IfWInActive ONLY works in Foxit
NumpadDot::Click 2
#IfWinActive
哦顺便说一句,无限循环是因为您的 Send, {NumPadDot} 启动了您自己的脚本。如果你想防止在热键之前放置一个 $,比如 $NumpadDot::
我已经通过“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
你不必有 else 语句:
NumpadDot::
SetTitleMatchMode 2 ; allow partial titles
IfWinActive, Foxit
Click 2
return