Ayuda con TrayIcon

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Ayuda con TrayIcon

Mensaje por yasmany »

Hola a todos, buscando una solución para mi problema.
Sucede que al llamar a la función _tray que se encarga de crear un icono en la bandeja, los botones de la interfaz principal no me funciona ninguno.
Mi objetivo es : al hacer clic en el botón [x] o el botón [Salir] la interfaz se vaya al icono de la bandeja, y al hacer clic en el TrayIcon en el item Mostrar la interfaz nuevamente aparezca, quisiera saber como solventar esto, a continuación está el código o si alguien me brinda una ayuda en la solución.
Desde ya muy agradecido.

Código: Seleccionar todo

#NoTrayIcon
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIComboBox.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GuiConstantsEx.au3>
#include <EditConstants.au3>
#include <GuiButton.au3>
#include <StaticConstants.au3>


$interfaz = GUICreate("Tray Gui", 250, 140, -1, -1)
$btn1 = GUICtrlCreateButton("Boton 1", 18, 95, 65, 25)
$btn2 = GUICtrlCreateButton("Boton 2", 88, 95, 65, 25)
$Salir = GUICtrlCreateButton("Salir", 158, 95, 65, 25)
$cbUnidades = GUICtrlCreateCombo("Lista", 25, 15, 193, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $CBS_UPPERCASE))
GUISetState(@SW_SHOW)
_tray()
Opt("GUICloseOnESC", 0)
While 1
	$nMsg = GUIGetMsg()

	Switch $nMsg
		Case $GUI_EVENT_CLOSE

			If $nMsg = $GUI_EVENT_CLOSE Then
				GUISetState(@SW_HIDE, $interfaz)
				_tray()

			EndIf
		Case $btn1
			MsgBox(64, "Mensaje", "Boton1")
		Case $btn2
			MsgBox(64, "Mensaje", "Boton2")
		Case $Salir
			GUISetState(@SW_HIDE, $interfaz)
			_tray()

	EndSwitch
WEnd

Func _tray()

	Opt("TrayMenuMode", 1) ; Los ítems de menú por defecto (del Script Pausado/Salir) no serán mostrados.
	$itemConfiguracion = TrayCreateItem("Configuración")
	$itemMostrar = TrayCreateItem("Mostrar")
	TrayCreateItem("")
	$itemAcerca = TrayCreateItem("Acerca")
	TrayCreateItem("")
	$itemSalir = TrayCreateItem("Salir")

	TraySetState()
	While 1
		$msg = TrayGetMsg()
		Select
			Case $msg = 0
				ContinueLoop
			Case $msg = $itemMostrar
				GUISetState(@SW_SHOW, $interfaz)
			Case $msg = $itemSalir
				Exit
		EndSelect
	WEnd
EndFunc   ;==>_tray
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Ayuda con TrayIcon

Mensaje por arkcrew »

Yo de la forma en que lo hago es que tengo dos partes.

El TrayGetMsg() y GUIGetMsg()

Y cuando minimizo cambio de un evento a otro de forma que así se activen los listeners correspondientes para eventos de tray o de interfaz.

Para minimizar basta con que escondas la interfaz GUISetState(@SW_HIDE, $Form1) y cargues el listener del tray, y para obtener los otros eventos puedes hacer un traymenú que te muestre la interfaz cuando se pulse GUISetState(@SW_SHOW) y cambie el listener del tray por el del gui.

Espero que más o menos te entiendas con lo que te digo xD

Saludos
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Ayuda con TrayIcon

Mensaje por yasmany »

Posees alguna aplicacion para verificar el codigo, sería genial.
Quisiera que ejecutaras el codigo para que puedas ver a que me refiero, muchas gracias por la ayuda.
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Ayuda con TrayIcon

Mensaje por arkcrew »

Toma, tu código modificado, sólo eran un par de cosas:

Código: Seleccionar todo

    #NoTrayIcon
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIComboBox.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>
    #include <GuiConstantsEx.au3>
    #include <EditConstants.au3>
    #include <GuiButton.au3>
    #include <StaticConstants.au3>

	Opt("TrayMenuMode", 1)
	Opt("TrayAutoPause", 0)

    $interfaz = GUICreate("Tray Gui", 250, 140)
    $btn1 = GUICtrlCreateButton("Boton 1", 18, 95, 65, 25)
    $btn2 = GUICtrlCreateButton("Boton 2", 88, 95, 65, 25)
    $Salir = GUICtrlCreateButton("Salir", 158, 95, 65, 25)
    $cbUnidades = GUICtrlCreateCombo("Lista", 25, 15, 193, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $CBS_UPPERCASE))
    GUISetState(@SW_SHOW)

       Opt("TrayMenuMode", 1) ; Los ítems de menú por defecto (del Script Pausado/Salir) no serán mostrados.
       $itemConfiguracion = TrayCreateItem("Configuración")
       $itemMostrar = TrayCreateItem("Mostrar")
       TrayCreateItem("")
       $itemAcerca = TrayCreateItem("Acerca")
       TrayCreateItem("")
       $itemSalir = TrayCreateItem("Salir")

	gui()
   ; _tray()

	func gui()
		Opt("GUICloseOnESC", 0)
		While 1
		   $nMsg = GUIGetMsg()

		   Switch $nMsg
			  Case $GUI_EVENT_CLOSE

				 If $nMsg = $GUI_EVENT_CLOSE Then
					GUISetState(@SW_HIDE, $interfaz)
					_tray()
					ExitLoop
				EndIf
			Case $GUI_EVENT_MINIMIZE
				 GUISetState(@SW_HIDE, $interfaz)
				 _tray()
				ExitLoop
			  Case $btn1
				 MsgBox(64, "Mensaje", "Boton1")
			  Case $btn2
				 MsgBox(64, "Mensaje", "Boton2")
			  Case $Salir
				 GUISetState(@SW_HIDE, $interfaz)
				 _tray()
				ExitLoop
		   EndSwitch
	   WEnd
   EndFunc

    Func _tray()



       TraySetState()
       While 1
          $msg = TrayGetMsg()
          Select
             Case $msg = 0
                ContinueLoop
             Case $msg = $itemMostrar
                GUISetState(@SW_SHOW)
				gui()
				ExitLoop
             Case $msg = $itemSalir
                Exit
          EndSelect
       WEnd
    EndFunc   ;==>_tray
Saludos!
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: Ayuda con TrayIcon

Mensaje por yasmany »

Gracias arkcrew disculpa las molestias, muchas gracias :smt001 me ha servido de mucho.
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Ayuda con TrayIcon

Mensaje por arkcrew »

Un placer!
Responder