Ocultar el icono de la bandeja de sistema de otra aplicación

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
Bethory
Mensajes: 13
Registrado: 11 Feb 2009, 20:24

Ocultar el icono de la bandeja de sistema de otra aplicación

Mensaje por Bethory »

Buen día a todos:

Como el título lo dice, necesito una función que me sirva para ocultar el icono de la bandeja de sistemas
de una aplicación rebelde que utilizo para monitoriar la actividad de mi sala de computo (soy docente de sistemas)
ello para evitar que me la cierren.

de yapa una que la oculte de los procesos de windows
Me gustaría arreglar el mundo.... pero no me han dado el código fuente xD
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Ocultar el icono de la bandeja de sistema de otra aplica

Mensaje por Chefito »

Pon Opt("TrayIconHide", 1) al inicio del programa y se ocultará el icono de la bandeja. También puedes definir su menu contextual.

Saludos.
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 ;).
Avatar de Usuario
Bethory
Mensajes: 13
Registrado: 11 Feb 2009, 20:24

Re: Ocultar el icono de la bandeja de sistema de otra aplica

Mensaje por Bethory »

Muchas gracias por tu pronta respuesta, pero en esta ocasión no me sirve esa opción puesto que la aplicación que uso para monitoriar es ajena a autoit,
es decir, mi propósito es controlar la aparición en bandeja de sistema de otra aplicación (la aplicación se llama LANVision)
Me gustaría arreglar el mundo.... pero no me han dado el código fuente xD
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Ocultar el icono de la bandeja de sistema de otra aplica

Mensaje por Chefito »

Mmmmmmm.....podrías haber buscado un poquito en el foro y hubieses visto algo que hice hace tiempo, pulsar un icono de la bandeja del sistema: http://www.emesn.com/autoitforum/viewto ... tray#p5223

Pues simplemente se trata de eso. Sabemos que el system tray es un control ToolbarWindow32 con instancia 1. Que este control pertenece a una ventana de clase Shell_TrayWnd. Todo este se puede saber simplemente utilizando el programa espia que lleva autoit llamado "Autoit Window Info".

Sabiendo esto ya podemos trabajar con el control directamente con la udf GuiToolBar.au3.
Lo que tienes que hacer es buscar entre todos los botones del control el que te interesa. Por ejemplo, esto se puede hacer buscando y comparando el texto de cada botón utilizando la función _GUICtrlToolbar_GetButtonText (igual que en el ejemplo que puse al principio). Una vez encontrado lo ocultas con la función _GUICtrlToolbar_HideButton.

En mi caso, he ocultado el botón de Ad-Aware:

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)="Ad-Aware" Then
        _GUICtrlToolbar_HideButton($TrayToolbar,$n)
        ExitLoop
    EndIf
Next
El texto es el que te sale cuando pones el cursor encima de las imágenes (tooltip).

Saludos.
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 ;).
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Ocultar el icono de la bandeja de sistema de otra aplica

Mensaje por BasicOs »

Hola,
Creo que vas a necesitar tambien un programa aparte que simplemente te haga lo siguiente planteando una versión Alfa:

Controla cerrar un programa por un usuario estandar:
While 1
If not ProcessExist("tuprograma.exe") then run("arrancar tu programa") ; Si no esta funcionando tu programa lo vuelve a ejecutar cansinamente
if WinExists("Administrador de Tareas de Windows") then WinClose("Administrador de Tareas de Windows") ; para que no pueda cerrar el proceso desde el TaskManager
sleep(5000) ; cada 5 segundos
Wend
Salu22:)
Responder