2012-03-26 26 views
6

El siguiente script funciona para abrir la barra de ubicación/"increíble" de Firefox desde cualquier lugar usando control-l, excepto cuando se usa Acrobat/Adobe Reader. Esto es porque control-l en Acrobat va a pantalla completa. Funciona, pero es feo y usa el #ifWinNotActive anidado.Hotkey if instrucción usando múltiples condicionales

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

El siguiente cambio de código no funciona. Autohotkey no se queja con errores, pero ignora los condicionales! WinActive y además parece quedar atrapado en un bucle infinito. ¿Alguna idea de por qué? (Probé la instrucción de retorno, tanto antes como después del paréntesis de cierre.)

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

¿Te importa compartir lo que hace el script (alto nivel)? – Coffee

+1

@Adel ver mis ediciones. –

Respuesta

7

Con la función WinActive necesita comillas alrededor ahk_class MozillaWindowClass
y no necesito la coma. El ciclo infinito podría resolverse agregando un hook$.

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

Sin embargo, escribirlo de esta manera solo es necesario si está utilizando AutoHotkey básico, que está desactualizado.
A menos que tenga un motivo legítimo para no actualizar a AutoHotkey_L (lo que es poco probable)
puede lograr lo que estaba intentando en el primer ejemplo con el #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 

En este ejemplo Ctrl + L y F1 sólo funcionará como codificada si
calculadora y/o el bloc de notas no están actualmente activo,
lo contrario actúan como lo haría normalmente.

Para cualquiera que no esté familiarizado con la abreviatura de AutoHotkey, ! significa que no.

Cuestiones relacionadas