2013-02-23 6 views
5

Ich habe die AutoHotKey documentation durchsuchen, und ich sehe keine klare Verwendung der Verwendung von 'oder' in kontextspezifischen Hotkeys. Auf meinem Setup wird Cygwin entweder mit ahk_class cygwin (wenn ich das Kontextmenü benutze) oder minty (wenn ich die .bat oder exe direkt benutze) starten.Wie verwende ich 'oder' in AutoHotKey-Skripten?

Derzeit ich duplizieren die Hotkeys in zwei getrennte Blöcke,

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

Gibt es eine Möglichkeit, sie zu kombinieren? Ich habe versucht:

#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 

... und keiner von diesen scheint zu arbeiten. This post besagt, dass dies mit Gruppen erreicht werden kann, aber ich suche nach einer Möglichkeit, sie in einer einzigen Anweisung zu kombinieren.

+0

Was ist falsch daran, sie zu duplizieren? –

+0

Wenn ich eine Verknüpfung hinzufüge, muss ich daran denken, sie zweimal hinzuzufügen. Das könnte beschwerlich werden, wenn es mehr als "nur zweimal" ist, und es ist unelegant, und ich suche nach einem Weg um es herum. – Ehryk

Antwort

3

Sie auch die folgende versuchen könnte, die ich getestet und es funktionierte für mich (AutoHotkey v1.1.14.01):

SetTitleMatchMode, REGEX 

#IfWinActive (cygwin)|(mintty) 

Dies nutzt die eingebauten oder Mechanismus von regulären Ausdrücken. Ich konnte aus irgendeinem Grund keine Gruppen zur Arbeit bringen.

+0

Ich hatte ein ähnliches Problem. Dies scheint für mich funktioniert zu haben. Vielen Dank. – Harshal

0

Könnten Sie das versuchen: Es ist die Art, wie ich dies mit regulären IF-Anweisungen mache.

#IfWinActive (ahk_class cygwin or ahk_class mintty) 
+0

Dies scheint auch nicht zu funktionieren. Ich habe es in die "versuchte" Liste oben eingefügt. – Ehryk

+0

@Ehryk, Tja, es war einen Versuch wert .... –

0

fand ich ein Beispiel, das dieses Format verwendet:

#IfWinActive ahk_class ExploreWClass|CabinetWClass 

See: Best AutoHotKey macros?

+0

Kein Glück, auch nicht, versucht mit | und || – Ehryk

4

Okay, ich erinnere mich, nachdem ein anderes Beispiel zu sehen: einen Gruppennamen mit mehreren ahk_class Einträgen definieren .. ..

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

Ja, es sieht so aus, als müsste ich auf Gruppen zurückgreifen. In der reinsten Form der Frage habe ich mich gefragt, ob 'oder' möglich ist (siehe die letzte Zeile); es sieht so aus als wäre es nicht. Wenn es an einem Tag oder so keine richtige Antwort gibt, werde ich dies als die Antwort markieren. Danke für Ihre Hilfe! – Ehryk

+0

Also, was hat für dich funktioniert? – Harshal

7

OK, letzte (und getestet).

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

Oh b.t.w. Ich benutze AutoHotKey_L, das #If unterstützt!

+0

Hat mein letzter Vorschlag Ihre Frage gelöst? –

1

Ich weiß, die Frage ist veraltet, aber für diejenigen, die nach einer Lösung für dieses

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

arbeitet suchen.