Página 1 de 1

Abrir ventana del system tray

Publicado: 08 Jun 2009, 10:47
por InfoHTPC
Buenas,

Estoy empezando en autoit , pero lo que quiero hacer es algo muy simple...Tengo un programa "wlite.exe" que debe de arrancar minimizado en el system tray ( no se como se le dice en español) el cual se queda con el icono al lado del reloj..

Autoit simplemente debe restaurar la ventana oculta. He estado mirando las funciones de WinXXX pero no he encontrado la que abra un proceso minimizado al lado del reloj de windows..

Agradeceria cualquier ayuda vuestra..

Muchas Gracias.

Re: Abrir ventana del system tray

Publicado: 08 Jun 2009, 19:24
por gna08
Revisa las funciones TraySetClick TraySetOnEvent, en la ayuda. Si tenes alguna duda o no te sale pregunta! :smt020
:smt006 SAludos

Re: Abrir ventana del system tray

Publicado: 08 Jun 2009, 20:44
por InfoHTPC
Gracias por responder,

He provado estas funciones:

TraySetState()
TraySetClick(4)

Y creo entender que con esta funcion me hace doble click a un icono del system tray, pero lo que no se es como indicarle a que icono quiero asociarlo. De hecho quiero que autoit haga como un "doble click " en un programa que ya existe y esta en ejecucion(wlite.exe), para asi poderlo poner a pantalla completa( Esto ultimo creo que no tendre problemas ya que he practicado con notepad y me ha salido bien).

He buscado ejemplos parecido a lo que necesito pero no he encontrado nada...perdonar la novatada... jejeje

Gracias

Re: Abrir ventana del system tray

Publicado: 08 Jun 2009, 22:51
por gna08
Haber si entendi, a lo k te refieres es a k por ejemplo hagas doble click se realize determinada accion, osea, doble click maximize ej: notepad. Asi seria?
:smt017
Espero tu respuestar :smt023

Re: Abrir ventana del system tray

Publicado: 09 Jun 2009, 02:54
por Chefito
Mmmm....las funciones que comienzan por Tray.... en el AutoIt que yo sepa son para el propio script (creo).

Una forma facil de hacer que aparezca la ventana del programa es volviendolo a ejecutar con las funciones Run,RunWait,ShellExecute,etc... alguna de estas seguro que vale :smt002 . Lo malo es que te ejecute dos instancias. Entonces esta forma no valdría :smt012 . Pero si el programa está bien programado, suele detectar que hay una instancia ya ejecutada.

La otra forma y más complicada es utilizando las funciones UDFs para el control ToolBar que es donde están ubicados los iconos del tray.
Te pongo un ejemplo el cual te muestra todos los textos de los iconos que están en el tray, y además, si encuentra el icono del Volumen, le da un doble click para mostrarte la ventana control de reproducción.
He tenido que retrasar en 20 mlsg. el espacio de tiempo entre click y click de ratón, ya que con los 10 mlsg. que venía en AutoIt por defecto, la mitad de las veces no detectaba el 2º click a causa de la velocidad. Si teneis problemas, aumentar este valor.

Código: Seleccionar todo

#Include <GuiToolBar.au3>

Opt("MouseClickDelay", 20)

Local $texto=""

$TrayToolbar = controlGetHandle("[CLASS:Shell_TrayWnd]","","ToolbarWindow321")

For $n=0 To _GUICtrlToolbar_ButtonCount($TrayToolbar)-1

    $texto=$texto & $n & " - " & _GUICtrlToolbar_GetButtonText($TrayToolbar,$n) & @CR & @CR

    If _GUICtrlToolbar_GetButtonText($TrayToolbar,$n)="Volumen" Then 

        _GUICtrlToolbar_ClickButton($TrayToolbar,$n,"left",False,2)

    EndIf

Next

MsgBox(0,"Resultado",$texto)
Para adaptarlo al tuyo, solo tendrías que buscar el texto del icono que te interesa cliquear, y cambiarlo en la condición. También mira si tienes que cliquearlo 1 o 2 veces (en mi ejemplo le he puesto 2).

Saludos :smt026 .

Re: Abrir ventana del system tray

Publicado: 09 Jun 2009, 08:25
por InfoHTPC
gna08 escribió:Haber si entendi, a lo k te refieres es a k por ejemplo hagas doble click se realize determinada accion, osea, doble click maximize ej: notepad. Asi seria?
:smt017
Espero tu respuestar :smt023
No..el script de autoit debe abrir una ventana de un programa ya ejecutado y que esta minimizado en el system tray.

Gracias!

Re: Abrir ventana del system tray

Publicado: 09 Jun 2009, 08:28
por InfoHTPC
Chefito escribió:Mmmm....las funciones que comienzan por Tray.... en el AutoIt que yo sepa son para el propio script (creo).

Una forma facil de hacer que aparezca la ventana del programa es volviendolo a ejecutar con las funciones Run,RunWait,ShellExecute,etc... alguna de estas seguro que vale :smt002 . Lo malo es que te ejecute dos instancias. Entonces esta forma no valdría :smt012 . Pero si el programa está bien programado, suele detectar que hay una instancia ya ejecutada.

La otra forma y más complicada es utilizando las funciones UDFs para el control ToolBar que es donde están ubicados los iconos del tray.
Te pongo un ejemplo el cual te muestra todos los textos de los iconos que están en el tray, y además, si encuentra el icono del Volumen, le da un doble click para mostrarte la ventana control de reproducción.
He tenido que retrasar en 20 mlsg. el espacio de tiempo entre click y click de ratón, ya que con los 10 mlsg. que venía en AutoIt por defecto, la mitad de las veces no detectaba el 2º click a causa de la velocidad. Si teneis problemas, aumentar este valor.

Código: Seleccionar todo

#Include <GuiToolBar.au3>

Opt("MouseClickDelay", 20)

Local $texto=""

$TrayToolbar = controlGetHandle("[CLASS:Shell_TrayWnd]","","ToolbarWindow321")

For $n=0 To _GUICtrlToolbar_ButtonCount($TrayToolbar)-1

    $texto=$texto & $n & " - " & _GUICtrlToolbar_GetButtonText($TrayToolbar,$n) & @CR & @CR

    If _GUICtrlToolbar_GetButtonText($TrayToolbar,$n)="Volumen" Then 

        _GUICtrlToolbar_ClickButton($TrayToolbar,$n,"left",False,2)

    EndIf

Next

MsgBox(0,"Resultado",$texto)
Para adaptarlo al tuyo, solo tendrías que buscar el texto del icono que te interesa cliquear, y cambiarlo en la condición. También mira si tienes que cliquearlo 1 o 2 veces (en mi ejemplo le he puesto 2).

Saludos :smt026 .

Muchas gracias por el ejemplo que te has trabajado. Ahora salgo para trabajar , cuando llegue a casa me pondre a hacer pruebas con esto y os lo comento!

Gracias y saludos

Re: Abrir ventana del system tray

Publicado: 09 Jun 2009, 19:46
por InfoHTPC
Buenas...

He estado haciendo pruebas y con el volumen si que funciona..pero con el programita que me interesa no...y tampoco con otros programas que tengo minimizados.. He estado modificando los tiempos del click del raton pero tampoco. Creo que tiene que haver alguna funcion mas directa .. no se si conoceis el programa Process Explorer... pues bien con este programa le seleccionas el archivo del proceso i le puedes dar la orden de abrir la ventana y funciona con todos los programas.. sigo buscando mas funciones a ver que tal.. No imaginaba que seria tan complicado jejeje

Re: Abrir ventana del system tray

Publicado: 09 Jun 2009, 21:16
por Chefito
Me extraña muchísimo que no te funcione pero bueno. A mi me funcionó con todos los iconos que tengo, incluido el antivirus, un programa de captura de pantalla, todas las redes, etc.
A ver si haces algo mal......puede que la condición no la hagas bien. No se no se. Me parece muy raro...pero todo puede ser en el mundo de la informática.

Que programa es y de donde se puede bajar? Es un programa para la webcam???

Saludos.

Re: Abrir ventana del system tray

Publicado: 10 Jun 2009, 08:49
por InfoHTPC
Lo mas probable es que haga algo mal...partiendo de mi nula experiencia en autoit..sin embargo cuando volvia a usarlo con el volumen si me funcionaba.

El programa es www.webcamxp.com , y si , es para una webcam, tiene servidor web incluido , grabaciones , etc... esta muy bien y tiene monitor de vigilancia que es lo que a mi me interesa. Lo queria integrar con Mediaportal , un soft de media center , para cuando lo necesitara , que se abriera el programa minimizado y me lo pusiera a pantalla completa.

Si te lo quieres mirar y te interesa.. Yo seguire "jugando" con el ejemplo que pusiste.

Gracias y Saludos

Re: Abrir ventana del system tray

Publicado: 10 Jun 2009, 19:33
por Nahuel
Es raro que no funcione con el script de chefito...
Es probable que el proceso no tenga una ventana oculta, sino que ésta es creada cuando le hacés click al ícono.

Mirá este script, te va decir si un proceso determinado tiene ventanas creadas:

Código: Seleccionar todo


#include <Array.au3>

$s_Proceso = "scite.exe";

$Pros = ProcessExists($s_Proceso);//devuelve PID

$a_ventanas = _ProsGetWins($Pros)

;//Titulo[HANDLE]

_ArrayDisplay($a_ventanas)

Func _ProsGetWins($iPID)

    $iPID=Number($iPID)

    Dim $avWins[1]=[0]

    $avAllWins=WinList()

    For $i=1 To $avAllWins[0][0]

        If WinGetProcess($avAllWins[$i][1]) = $iPID Then __ArrayAdd($avWins,WinGetTitle($avAllWins[$i][1]) & " [" &$avAllWins[$i][1] & "]")

    Next

    Return $avWins

EndFunc

Func __ArrayAdd(ByRef $avArray, $vValue)

    If Not IsArray($avArray) Then Return SetError(1, 0, -1)

    Local $iUBound = UBound($avArray)

    ReDim $avArray[$iUBound + 1]

    $avArray[$iUBound] = $vValue

    $avArray[0] = $iUBound

EndFunc

 
Si el script no muestra nada, es porque tu proceso no ha creado ventanas. Si las ha creado, tiene que ser posible hacerla visible con las funciones Win*() de Autoit.

Re: Abrir ventana del system tray

Publicado: 10 Jun 2009, 22:00
por InfoHTPC
hola,
he subido una captura de pantalla para que veais el proceso que tengo abierto y usando el script del compañero Nahuel . A ver si con la captura nos ayuda un poco a todos...

La imagen:http://img31.imageshack.us/img31/5903/autoit.jpg

Gracias y saludos

Re: Abrir ventana del system tray

Publicado: 11 Jun 2009, 01:38
por Chefito
Mi script funciona bien. Lo que no se puede hacer es coger un script de ejemplo y no cambiar absolutamente nada y decir que no va :smt011 .
Jueeerrrrrr....que solo tenías que cambiar el texto del Volumen por el de tu programa....que no era tan complicado :smt021 .
Bueno.......aquí va el script mascado y triturado :smt020 . Hay que poner algo más de atención y estudiar más los funcionamientos de los scripts :smt024 .

Código: Seleccionar todo

#Include <GuiToolBar.au3>

Opt("MouseClickDelay", 20)

Local $texto=""

$TrayToolbar = controlGetHandle("[CLASS:Shell_TrayWnd]","","ToolbarWindow321")

For $n=0 To _GUICtrlToolbar_ButtonCount($TrayToolbar)-1

    If _GUICtrlToolbar_GetButtonText($TrayToolbar,$n)="webcamXP" Then 

        _GUICtrlToolbar_ClickButton($TrayToolbar,$n,"left",False,2)

        ExitLoop

    EndIf

Next

 
Saludos y más atención, que solo tenías que cambiar "Volumen" por "webcamXP" :smt018 .

Re: Abrir ventana del system tray

Publicado: 11 Jun 2009, 08:40
por InfoHTPC
Buenas Chefito , hasta ahi si que llego, ya te dije que hice el cambio de nombre de volumen por webcampxp y que incluso cambie los valores del click del raton y no me funciono , aun asi ya comente que seguiria jugando con el script a ver si daba con ello.No descarto para nada el script tuyo ni dudo de su funcionamiento, lo que no se porque a mi no me funcionaba bien.

Aun asi gracias por tu persistencia,

Saludos y ya os ire contando

Gracias.

Re: Abrir ventana del system tray

Publicado: 11 Jun 2009, 10:49
por Chefito
ok ok. Creía que no habías llegado a cambiar el nombre :smt004 .
Pues ya me he mosqueado tanto con esto de que no te funcione que me he bajado el programa y lo he instalado. A mí, el último script que te puse, me va de lujo :smt023 . No se porque a ti no te va :smt102 . Será a causa de las cosas extrañas que a veces pasa en la informática ??? :smt102 . Ni idea.
Mira si por lo menos te entra en la condición if ....... then y dimelo. Pon por ejemplo esto:

Código: Seleccionar todo

    If _GUICtrlToolbar_GetButtonText($TrayToolbar,$n)="webcamXP" Then 

        msgbox(0,"","he entrado")

        _GUICtrlToolbar_ClickButton($TrayToolbar,$n,"left",False,2)

        ExitLoop

    EndIf

 
Si entra te saltará un mensaje. Entonces el fallo estaría seguramente en la forma de cliquear el icono.
Si no entra (esto sería lo mejor para poder corregirlo de algún modo), entonces es que la comparación está mal por alguna causa (no es el mismo texto o no está ese texto). En este caso seguramente se podría comprobar si está el icono de otro modo.
Haz esto y ya me comentas el resultado.

Saludos.

Re: Abrir ventana del system tray

Publicado: 11 Jun 2009, 14:36
por InfoHTPC
Buenas, ya me funciona a mi tambien! Ya encontre el problema.. El soft de media center se pone en pantalla completa..y ocultaba la barra de tareas y yo no podia ver que la ocultaba. El mediacenter tenía una opción marcada similar a la de "Ocultar la barra de tareas" de windows .

He provado el script sin hacer correr otros programas que no vienen al caso y con la opcion "ocultar la barra..." de windows y efectivamente con esta opcion el script no me abre la ventana de webcamxp.

Pero eso no me importa ya que en mi caso no es necesario ocultar la barra de tareas. Lo importante era detectar de donde me venia a mi el problema.

Muchas gracias de nuevo!!

Saludos! :D

Re: Abrir ventana del system tray

Publicado: 11 Jun 2009, 17:02
por Chefito
Jejejeje....claro. El script lo que hace es cliquear el icono a supervelocidad :smt003 . Si la barra está oculta, entonces no puede cliquear el icono porque no queda a la vista :smt005 .
Me alegro que solucionases el problema.

Saludos.