2012-03-26 12 views
6

Il seguente script consente di aprire la posizione di Firefox/la barra "impressionante" da qualsiasi posizione utilizzando control-l, tranne quando si utilizza Acrobat/Adobe Reader. Questo perché control-l in Acrobat diventa schermo intero. Funziona, ma è brutto e usa nidificato #ifWinNotActive.Tasto di scelta rapida se si utilizzano più condizionali

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

La sostituzione del codice sottostante non funziona. Autohotkey non si lamenta di errori, ma ignora i condizionali! WinActive e inoltre sembra essere catturato in un loop infinito. Qualche idea, perché? (Ho provato l'istruzione return sia prima che dopo la parentesi di chiusura.)

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

Ti dispiace condividere ciò che fa lo script (di alto livello)? – Coffee

+1

@Adel vedere le mie modifiche. –

risposta

7

Con la funzione WinActive è necessario virgolette attorno ahk_class MozillaWindowClass
e non ho bisogno la virgola. Il ciclo infinito potrebbe essere risolto aggiungendo un$.

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

Tuttavia, a scrivere in questo modo è necessaria solo se si sta utilizzando AutoHotkey di base, che non è aggiornato.
Se non si dispone di un motivo valido per non eseguire l'aggiornamento a AutoHotkey_L (che è improbabile)
è possibile eseguire ciò che si è cercato nel primo esempio con #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 

In questo esempio Ctrl +L e F1 funziona solo come codificato se
calcolatrice e/o blocco note non sono attualmente attiva,
altrimenti agiscono come farebbero normalmente.

Per chi non ha familiarità con la stenografia di AutoHotkey, ! significa no.

Problemi correlati