Autohotkey 有条件地忽略本机击键

Autohotkey 有条件地忽略本机击键

我怎样才能使热键特定于应用程序,但受某些因素影响,以便如果条件不成立,则热键将由本机/默认处理程序处理?

我创建了一个热键,希望它在 MS Access 中查询设计模式时起作用。我使用查找文本图像搜索。如果检测到该模式,我希望我的 autohotkey 脚本运行并且不将击键传回 Windows 或 Access。如果未检测到该模式,我希望 Windows/Access 能够处理击键。

如果未检测到条件,我不知道如何让脚本忽略该热键。我有一个这样的脚本:

#IfWinActive ahk_class OMain ; Access
^R::  ; CTRL+R

; Use FindText to see if a certain image is on screen
If FindText()...
{
     ; do my automation of Access
}
else
{
     ; I'm not in the design mode.  Let the CTRL+R key be handled by Access or Windows.
}
return
#IfWinActive 

我尝试在热键前面加上波浪符号,但是这会让 Access 在设计模式下做一些我不想发生的事情。

我可以用什么方法来处理这个问题?


出于好奇,我为 Access 创建了一个 AutoHotkey 宏,它将扩展查询设计视图中的所有列宽。这让我在尝试查看长公式时保持理智。

一次按键即可改变这一点: 前

对此:

后

答案1

您可以直接使用 SendInput 来做您想做的事情。

我自己的许多按键都是这样设置的。捕获一些按键,检查条件并处理它,或者使用 SendInput 让按键“通过”

例如浏览器上的 F11:如果标题是这样的,我会做一些事情,比如填写表格,但除此之外,我会使用 SendInput {F11} “传递”到浏览器进行正常的全屏显示。

#IfWinActive ahk_class OMain ; Access
^R::  ; CTRL+R

; Use FindText to see if a certain image is on screen
If FindText()...
{
     ; do my automation of Access
}
else
{
     SendInput ^r    ;this is all you were missing
}
return
#IfWinActive 

相关内容