如何在AutoHotKey脚本中使用'或'?

时间:2013-02-23 18:27:50

标签: conditional autohotkey conditional-statements

我一直在浏览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表示这可以通过组完成,但我正在寻找一种方法将它们组合在一个语句中。

6 个答案:

答案 0 :(得分:7)

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

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

哦b.t.w。我使用AutoHotKey_L,它支持#If!

答案 1 :(得分:6)

好的,我记得,在看到另一个例子之后:用多个ahk_class条目定义一个GroupName ....

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

答案 2 :(得分:3)

你也可以尝试以下方法,我测试了它,它对我有用(AutoHotkey v1.1.14.01):

SetTitleMatchMode, REGEX

#IfWinActive (cygwin)|(mintty)

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

答案 3 :(得分:3)

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

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

正在运作。

答案 4 :(得分:-1)

你可以试试这个:这是我用常规IF语句做的方式。

#IfWinActive (ahk_class cygwin or ahk_class mintty)

答案 5 :(得分:-1)

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

#IfWinActive ahk_class ExploreWClass|CabinetWClass

请参阅:Best AutoHotKey macros?