2012-03-26 13 views
6

Poniższy skrypt działa, aby otworzyć lokalizację/"niesamowity" pasek przeglądarki Firefox z dowolnego miejsca, używając control-l, z wyjątkiem korzystania z programu Acrobat/Adobe Reader. Dzieje się tak, ponieważ control-l w programie Acrobat przechodzi na pełny ekran. Działa, ale jest brzydki i używa zagnieżdżonego #ifWinNotActive.Skrót, jeśli instrukcja używa wielu warunków warunkowych

#IfWinNotActive, ahk_class MozillaWindowClass 
#IfWinNotActive, ahk_class ahk_class AcrobatSDIWindow 
^l:: 
WinActivate, ahk_class MozillaWindowClass 
Send, ^l 
return 
#IfWinNotActive 
#IfWinNotActive 

Poniższa zamiana kodu nie działa. Autohotkey nie narzeka z błędami, ale ignoruje warunek WinActive i wydaje się, że został złapany w nieskończoną pętlę. Jakieś pomysły, dlaczego? (Próbowałem return zarówno przed jak i po nawiasie zamykającym.)

^l:: 
if (!WinActive(ahk_class,MozillaWindowClass)) and (!WinActive(ahk_class,AcrobatSDIWindow)) { 
    WinActivate, ahk_class MozillaWindowClass 
    Send, ^l 
} 
return 
+0

Czy chcesz podzielić się tym, co robi skrypt (wysoki poziom)? – Coffee

+1

@Zobacz moje zmiany. –

Odpowiedz

7

Dzięki funkcji WinActive trzeba cudzysłowie ahk_class MozillaWindowClass
i nie trzeba przecinek. Nieskończoną pętlę można rozwiązać, dodając hook$.

$^l:: 
if (!WinActive("ahk_class MozillaWindowClass")) 
    and (!WinActive("ahk_class AcrobatSDIWindow")) 
{ 
    WinActivate, ahk_class MozillaWindowClass 
    Send, ^l 
} else 
    Send, ^l 
Return 

Jednak pisanie w ten sposób jest konieczne tylko w przypadku korzystania z programu AutoHotkey basic, który jest nieaktualny.
Jeśli nie masz uzasadnionego powodu, aby nie zaktualizować do AutoHotkey_L (co jest mało prawdopodobne)
możesz wykonać to, co próbujesz w pierwszym przykładzie z #If directive.

#If !WinActive("ahk_class CalcFrame") && !WinActive("ahk_class Notepad") 

^l:: 
Run, notepad 
Winwait, ahk_class Notepad 
Send, test 
Return 

f1::traytip,, test 

#If 

W tym przykładzie Ctrl + L i F1 będzie działać tylko jako kodowane jeśli
kalkulator i/lub notatnik nie są aktualnie aktywne,
inaczej działają one jak oni zwykle.

Dla każdego, kto nie zna skrótu AutoHotkey, ! oznacza "nie".