7

我一直在浏览AutoHotKey 文档,但我没有看到如何在上下文特定的热键中使用“或”的明确用法。在我的设置中,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 

...而且这些似乎都不起作用。这篇文章指出这可以通过组来完成,但我正在寻找一种将它们组合在一个语句中的方法。

4

6 回答 6

9

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

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

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

于 2013-02-24T07:26:22.003 回答
8

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

GroupAdd, GroupName, ahk_class ExploreWClass
GroupAdd, GroupName, ahk_class CabinetWClass
#IfWinActive ahk_group GroupName
于 2013-02-23T21:19:14.397 回答
4

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

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

正在工作中。

于 2014-11-10T13:27:37.320 回答
4

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

SetTitleMatchMode, REGEX

#IfWinActive (cygwin)|(mintty)

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

于 2014-06-20T16:29:26.407 回答
-1

你可以试试这个:这是我使用常规 IF 语句执行此操作的方式。

#IfWinActive (ahk_class cygwin or ahk_class mintty)
于 2013-02-23T19:06:04.853 回答
-1

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

#IfWinActive ahk_class ExploreWClass|CabinetWClass

请参阅:最佳 AutoHotKey 宏?

于 2013-02-23T20:50:32.657 回答