Buenas foreros, quería saber si hay alguna manera de controlar la pérdida de foco (desactivación) de la ventana de un GUI de autoIt. Es decir, no es que un control pierda el foco, sino que la ventana no esté activa.
Tengo un tooltip mostrado con la ventana y si pierde foco (se minimiza, se activa otra que se pone delante, etc) pues quiero quitar el tooltip.
Una manera supongo que es estar mirando constantemente WinActive($miGUI), pero preferiría no estar haciendo eso todo el rato. Mi pregunta es si hay alguna manera de manejarlo en plan evento, para que sólo me notifique cuando pase eso.
Sí que tengo $GUI_EVENT_MINIMIZE, pero no es suficiente porque por ejemplo si cambio a otra ventana pinchando sobre ella o cambiando con ALT+TAB (y quizás de otras maneras) también tengo que actuar, y para eso GUIGetMsg no devuelve nada...
¿Quizás algún mensaje de Windows que pueda registrar con GUIRegisterMsg para que me avise de esto?
Graciasss
Evento para ventana desactivada
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Evento para ventana desactivada
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Evento para ventana desactivada
Aquí te dejo un ejemplo con los mensajes que envia el win cuando la ventana pierde y gana el foco.
Saludos.
Código: Seleccionar todo
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
GUIRegisterMsg($WM_KILLFOCUS, "WM_KILLFOCUS")
GUIRegisterMsg($WM_SETFOCUS, "WM_SETFOCUS")
Local $msg
GUICreate("My GUI") ; will create a dialog box that when displayed is centered
GUISetState(@SW_SHOW) ; will display an empty dialog box
; Run the GUI until the dialog is closed
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
GUIDelete()
Func WM_KILLFOCUS($hWnd, $iMsg, $iwParam, $ilParam)
TrayTip("Perdida","LA VENTANA HA PERDIDO EL FOCO",0,1)
EndFunc
Func WM_SETFOCUS($hWnd, $iMsg, $iwParam, $ilParam)
TrayTip("Ganancia","LA VENTANA HA GANADO EL FOCO",0,1)
EndFunc
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Evento para ventana desactivada
¡Justo, justo, justo! Muchas gracias, es justo lo que estaba buscando.
Encontré el mensaje WM_ACTIVATE, y por ahí se puede hacer, pero hay que estar investigando los parámetros para ver si se ha activado o desactivado. Es más general y hace más cosas pero ahora sólo necesito WM_KILLFOCUS, así que con eso voy al grano.
Gracias
Encontré el mensaje WM_ACTIVATE, y por ahí se puede hacer, pero hay que estar investigando los parámetros para ver si se ha activado o desactivado. Es más general y hace más cosas pero ahora sólo necesito WM_KILLFOCUS, así que con eso voy al grano.
Gracias
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)