![Autohotkey 有条件地忽略本机击键](https://linux22.com/image/1599278/Autohotkey%20%E6%9C%89%E6%9D%A1%E4%BB%B6%E5%9C%B0%E5%BF%BD%E7%95%A5%E6%9C%AC%E6%9C%BA%E5%87%BB%E9%94%AE.png)
我怎样才能使热键特定于应用程序,但受某些因素影响,以便如果条件不成立,则热键将由本机/默认处理程序处理?
我创建了一个热键,希望它在 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