如何在 AutoHotKey 脚本中使用“或”?

Posted

技术标签:

【中文标题】如何在 AutoHotKey 脚本中使用“或”?【英文标题】:How do I use 'or's in AutoHotKey scripts? 【发布时间】:2013-02-09 05:47:44 【问题描述】:

我一直在浏览AutoHotKey documentation,但我没有看到如何在特定于上下文的热键中使用“或”。在我的设置中,Cygwin 将使用 ahk_class cygwin(当我使用上下文菜单时)或 mintty(当我直接使用 .bat 或 exe 时)启动。

目前,我将热键复制到两个单独的块中,

#IfWinActive ahk_class cygwin
...
#IfWinActive
#IfWinActive ahk_class mintty
...
#IfWinActive

有没有办法把它们结合起来?我试过了:

#IfWinActive ahk_class cygwin ahk_class mintty
#IfWinActive ahk_class || cygwin ahk_class mintty
#IfWinActive ahk_class or cygwin ahk_class mintty
#IfWinActive ahk_class cygwin || #IfWinActive ahk_class mintty
#IfWinActive ahk_class cygwin or #IfWinActive ahk_class mintty
#IfWinActive (ahk_class cygwin or ahk_class mintty)
#IfWinActive (ahk_class cygwin || ahk_class mintty)
#IfWinActive ahk_class cygwin|mintty
#IfWinActive ahk_class cygwin||mintty 

...这些似乎都不起作用。 This post 表示这可以通过组来完成,但我正在寻找一种将它们组合在一个语句中的方法。

【问题讨论】:

复制它们有什么问题? 如果我添加一个快捷方式,我必须记得添加两次。如果它不止“两次”,这可能会变得很麻烦,而且不优雅,我正在寻找解决方法。 【参考方案1】:

好的,最后一个(并经过测试)。

#If WinActive("ahk_class ExploreWClass") || WinActive("ahk_class CabinetWClass")

哦,顺便说一句。我使用 AutoHotKey_L,它支持 #If!

【讨论】:

【参考方案2】:

好吧,我记得,在看到另一个例子后:Define a GroupName with multiple ahk_class entries....

GroupAdd, GroupName, ahk_class ExploreWClass
GroupAdd, GroupName, ahk_class CabinetWClass
#IfWinActive ahk_group GroupName

【讨论】:

是的,看来我将不得不求助于团体。在最纯粹的问题形式中,我想知道“或”是否可能(见最后一行);看起来不是。如果一天左右没有发布正确或答案,我会将其标记为答案。感谢您的帮助! 我要注意,GroupAdd 语句应该在脚本的最开始,否则它将不起作用。【参考方案3】:

您也可以尝试以下方法,我测试过并且对我有用(AutoHotkey v1.1.14.01):

SetTitleMatchMode, REGEX

#IfWinActive (cygwin)|(mintty)

这使用了正则表达式的内置 OR 机制。由于某种原因,我无法让小组工作。

【讨论】:

我遇到了类似的问题。这似乎对我有用。谢谢。【参考方案4】:

我知道这个问题已经过时了,但是对于那些正在寻找解决方案的人来说

#if WinActive("ahk_class cygwin") or WinActive("ahk_class mintty") 

正在工作。

【讨论】:

【参考方案5】:

你能试试这个:这是我使用常规 IF 语句的方式。

#IfWinActive (ahk_class cygwin or ahk_class mintty)

【讨论】:

这似乎也不起作用。我将它添加到上面的“尝试”列表中。【参考方案6】:

我找到了一个使用这种格式的例子:

#IfWinActive ahk_class ExploreWClass|CabinetWClass

见:Best AutoHotKey macros?

【讨论】:

以上是关于如何在 AutoHotKey 脚本中使用“或”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AutoHotkey 中的 SendInput 命令之间添加延迟?

notepad++中如何让autohotkey 代码高亮

;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk

如何使用 AutoHotkey 锁定我的计算机?

如何在 AutoHotkey 中等待两个或多个不同的窗口

Autohotkey 和 Windows 10:如何获取当前资源管理器路径