¿Qué debo hacer para que una aplicación de Windows Forms se ejecute en la bandeja del sistema?
No es una aplicación que pueda minimizar la bandeja, sino una que solo existe en la bandeja, con nada más que un ícono, información sobre herramientas y menú de "clic derecho".
c#
.net
winforms
system-tray
xyz
fuente
fuente
icon.Visible = false
, luegoDispose()
el icono al salir de su aplicación. De lo contrario, aún verá el icono después de que su programa salga. Después de probarlo un par de veces, ya no sabrá qué icono es real.Respuestas:
El artículo del proyecto de código Creación de una aplicación de bandeja de tareas ofrece una explicación muy simple y un ejemplo de cómo crear una aplicación que solo existe en la bandeja del sistema.
Básicamente, cambie la
Application.Run(new Form1());
líneaProgram.cs
para iniciar una clase que herede deApplicationContext
, y haga que el constructor de esa clase inicialice unNotifyIcon
fuente
Como dice mat1t: debe agregar un NotifyIcon a su aplicación y luego usar algo como el siguiente código para configurar la información sobre herramientas y el menú contextual:
Este código muestra el ícono en la bandeja del sistema solamente:
Lo siguiente será necesario si tiene un formulario (por cualquier razón):
El clic derecho para obtener el menú contextual se maneja automáticamente, pero si desea realizar alguna acción con un clic izquierdo, deberá agregar un controlador Click:
fuente
Escribí una aplicación de barra de bandeja con .NET 1.1 y no necesitaba un formulario.
En primer lugar, establezca el objeto de inicio del proyecto como Sub
Main
, definido en un módulo.Luego cree programáticamente los componentes: el
NotifyIcon
yContextMenu
.Asegúrese de incluir un
MenuItem
"Salir" o similar.Vincula el
ContextMenu
a laNotifyIcon
.Invoke
Application.Run()
.En el controlador de eventos para Salir,
MenuItem
asegúrese de llamar al conjuntoNotifyIcon.Visible = False
, entoncesApplication.Exit()
. Agregue lo que necesita alContextMenu
y maneje correctamente :)fuente
Form1
del código.Form1
.NotifyIcon
clase para crear el icono de la bandeja del sistema (asígnele un icono).NotifyIcon
clic del mouse y diferencie entre el clic derecho y el izquierdo, configurando su menú contextual y mostrándolo para cualquier botón (derecho / izquierdo) presionado.Application.Run()
para mantener la aplicación funcionandoApplication.Exit()
para salir. O abool bRunning = true; while(bRunning){Application.DoEvents(); Thread.Sleep(10);}
. Luego configurebRunning = false;
para salir de la aplicación.fuente
La aplicación "Bandeja del sistema" es solo una aplicación de formularios de ganancias regulares, la única diferencia es que crea un icono en el área de la bandeja del sistema de Windows. Para crear el icono sys.tray use el componente NotifyIcon, puede encontrarlo en Toolbox (controles comunes) y modificar sus propiedades: icono, información sobre herramientas. También le permite manejar los mensajes de clic del mouse y doble clic.
Y una cosa más, con el fin de lograr la apariencia o la aplicación estándar de la bandeja. agregue líneas de seguimiento en su evento de presentación de formulario principal:
fuente
Hasta donde yo sé, todavía tiene que escribir la aplicación usando un formulario, pero no tiene controles en el formulario y nunca lo configura como visible. Use NotifyIcon (una muestra de MSDN que se puede encontrar aquí ) para escribir su aplicación.
fuente
Así es como lo hice con Visual Studio 2010 , .NET 4
fuente
Es un marco muy amigable para la aplicación del área de notificación ... es suficiente agregar NotificationIcon al formulario base y cambiar el código generado automáticamente al código a continuación:
fuente
Simplemente agregue
a su objeto de forma. Solo verá un icono en la bandeja del sistema.
fuente