如何在 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 命令之间添加延迟?