2012-02-07 12 views
6

Estoy usando el recordatorio de reposo WorkRave y quiero apagar la pantalla cuando aparece la ventana de descanso. Sé cómo apagarlo.Ventana de Autohotkey aparece el evento

¿Cómo se crea un evento cuando aparece la ventana especificada (#IfWinActive ahk_class ...)?

Además, ¿puedo asociar% símbolo? {%} no funciona, en lugar de otros.

+0

Romale, puede abrir el espía ventanas cuando este recordatorio Workrave resto está activo? Abre el Windows Spy haciendo clic con el botón derecho en el ícono de AHK. El Window Spy siempre estará en la parte superior, Cuando active la pantalla WorkRave, debería ver los detalles (incluido ahk_class). No sé qué es lo que quieres hacer con el signo%. –

+0

Romale, ¿hay suerte hasta ahora? –

+0

1. Windows spy no puede detectar la primera estancia de workrave en la advertencia superior. Pero lo he atrapado a través de la lista de ventanas (ahk_class). ¿Cómo puedo vincular una acción, cuando aparece? 2. Ejemplo, no funciona: 5 :: {%} % :: {5} –

Respuesta

8

Tener una notificación instantánea de una ventana que aparece, utilice un gancho de Shell. Esto a veces es tan rápido que la reacción automática puede reaccionar incluso antes de que usted vea la ventana.

Se muestra un gancho de shell en el AutoHotkey Forum.

Un ejemplo con su uso (casi una copia literal del mensaje del foro):

#Persistent 
SetBatchLines, -1 
Process, Priority,, High 

Gui +LastFound 
hWnd := WinExist() 

DllCall("RegisterShellHookWindow", UInt,hWnd) 
MsgNum := DllCall("RegisterWindowMessage", Str,"SHELLHOOK") 
OnMessage(MsgNum, "ShellMessage") 
Return 

ShellMessage(wParam,lParam) 
{ 
    If (wParam = 1) ; HSHELL_WINDOWCREATED := 1 
    { 
     WinGetTitle, Title, ahk_id %lParam% 
     If (Title = "WorkRest") 
      WinClose, ahk_id %lParam% ; close it immideately 
    } 
} 

Si desea utilizar un símbolo literal% en un comando, escapar de ella con carácter de escape de AutoHotkey, la tilde `(en la misma tecla que ~ en un teclado de Estados Unidos) de esta manera:

MsgBox You are 200`% awesome! 
+0

¡Esto es fantástico y funciona genial! Eche un vistazo a [esta respuesta] también (http://superuser.com/a/266240/16847). ¿Puedes diseñar tu script para hacer eso también? Es decir. detectar todas las ventanas existentes y ver si se ha visto anteriormente o no? – Vijay

0

Romale,

Puede probar esto, pero como yo no uso Workrave, no puedo probarlo.

; This next line needs to be added at the top of the AHK file, so it will be started as soon as AHK starts. 
; Every 120000 ms, it will launch the "WorkRave:" script to check if a window with WorkRave exists. 
SetTimer, WorkRave,120000 ; Run WorkRaveTester every 2 minutes = 120000 


; Somewhere else in the AHK file..... 
WorkRave: ; This is the label for the WorkRave script 
SetTitleMatchMode, 2 ; 2 = Matches the string WorkRave anywhere in the window title of IfWinExist 
IfWinExist, WorkRave ; When WorkRave window exists 
{ 
    TrayTip, WorkRave, Started ,1 ; Or whatever you want to do here.... 
} 
Return 
Cuestiones relacionadas