Inicio de una aplicación como un icono en la bandeja del sistema
Este artículo le mostrará cómo iniciar una applicacion minimizado con un icono en la bandeja del sistema (el área a la derecha de la barra de tareas)
COLOCAR UN ICONO EN LA BANDEJA del SISTEMA
La bandeja del sistema es el área a la derecha de la barra de tareas donde el 'fondo' de aplicaciones puede colocar sus iconos. Para colocar un icono en la bandeja que tiene que llamar a la Shell_NotifyIcon API declarado en el ShellAPI unidad, pasándole la constante NIM_ADD (para decirle que añadir un icono) y la dirección de un TNotifyIconData registro con el icono de información que incluye el identificador del icono, el texto a mostrar como la punta de la herramienta cuando se sitúa el ratón sobre el icono, el identificador de la ventana que va a recibir los mensajes de el icono y el tipo de mensaje el icono de enviar a esta ventana.
usos
& nbsp & nbsp & nbsp & nbsp & nbsp ..., ShellAPI
& nbsp & nbsp const
& nbsp & nbsp & nbsp & nbsp WM_ICONTRAY = WM_USER 1 // mensaje definido por el Usuario
& nbsp & nbsp tipo de
& nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp & nbsp & nbsp NotifyIconData : TNotifyIconData
& nbsp & nbsp aplicación
& nbsp & nbsp procedure TForm1.FormCreate(Sender: TObject)
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp con NotifyIconData empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp hIcon := Icono.Mango
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp StrPCopy(szTip, Aplicación.El título)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Wnd := Identificador
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp uCallbackMessage := WM_ICONTRAY
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp uID := 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp uFlags := NIF_MESSAGE NIF_ICON NIF_TIP
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp cbSize := sizeof(TNotifyIconData)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp Shell_NotifyIcon(NIM_ADD, @NotifyIconData)
& nbsp & nbsp final
MANEJO ICONO de MENSAJES
Form1 recibirá WM_ICONTRAY mensajes desde el icono. Para capturar y controlar estos mensajes tenemos para declarar un nuevo método en nuestro formulario. Por ejemplo:
tipo
& nbsp & nbsp & nbsp & nbsp TForm1 = class(TForm)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp & nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp { Private declarations }
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp procedimiento Icontray(var Msg: TMessage) mensaje WM_ICONTRAY
& nbsp & nbsp & nbsp & nbsp pública
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp { Public declarations }
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp & nbsp & nbsp final
En la aplicación de este método podemos, por ejemplo, mostrar un menú emergente cuando el usuario haga clic en el icono. Suponiendo que usted ha creado un menú emergente nombre PopupMenu1, el código siguiente se hará el truco:
procedure TForm1.Icontray(var Msg: TMessage)
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp CursorPos : TPoint
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si Msg.lParam = WM_RBUTTONDOWN, a continuación, empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp GetCursorPos(CursorPos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp PopupMenu1.Popup(CursorPos.x, CursorPos.y)
& nbsp & nbsp & nbsp & nbsp end else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp heredado
& nbsp & nbsp final
MOSTRAR Y OCULTAR EL FORMULARIO
Normalmente se incluyen un elemento de menú en el menú emergente para mostrar el formulario, así que todo lo que tienes que hacer es escribir un controlador de eventos para llamar al método Mostrar de la forma y, opcionalmente, eliminar el icono de la bandeja del sistema:
procedure TForm1.mnuShowClick(Sender: TObject)
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Mostrar
& nbsp & nbsp & nbsp & nbsp // Shell_NotifyIcon(NIM_DELETE, @NotifyIconData)
& nbsp & nbsp final
Cuando el usuario cierra el formulario, por ejemplo, puede ocultar que en lugar de cerrarlo y opcionalmente mostrar el icono en la bandeja del sistema si se ha eliminado cuando se hizo visible el formulario. Por ejemplo:
procedure TForm1.FormClose(Sender: TObject var Acción: TCloseAction)
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Acción := caNone
& nbsp & nbsp & nbsp & nbsp Ocultar
& nbsp & nbsp & nbsp & nbsp // Shell_NotifyIcon(NIM_ADD, @NotifyIconData)
& nbsp & nbsp final
el ACABADO de LA APLICACIÓN
Usted puede tener un elemento de menú en el menú emergente para salir de la aplicación. En este caso usted tiene que escribir un controlador de eventos para el evento click para quitar el icono y el acabado de la aplicación:
procedure TForm1.mnuExitClick(Sender: TObject)
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Shell_NotifyIcon(NIM_DELETE, @NotifyIconData)
& nbsp & nbsp & nbsp & nbsp Aplicación.ProcessMessages
& nbsp & nbsp & nbsp & nbsp Aplicación.Terminar
& nbsp & nbsp final
El código fuente completo del ejemplo de este artículo puede ser descargado de:
http://www.latiumsoftware.com/download/d00035.zip
Inicio de una aplicacion como un icono en la bandeja del sistema
Inicio de una aplicacion como un icono en la bandeja del sistema : Multi-millones de consejos para hacer su vida mas facil.
Este articulo le mostrara como iniciar una applicacion minimizado con un icono en la bandeja del sistema (el area a la derecha de la barra de tareas)
COLOCAR UN ICONO EN LA BANDEJA del SISTEMA
La bandeja del sistema es el area a la derecha de la barra de tareas donde el 'fondo' de aplicaciones puede colocar sus iconos. Para colocar un icono en la bandeja que tiene que llamar a la Shell_NotifyIcon API declarado en el ShellAPI unidad, pasandole la constante NIM_ADD (para decirle que añadir un icono) y la direccion de un TNotifyIconData registro con el icono de informacion que incluye el identificador del icono, el texto a mostrar como la punta de la herramienta cuando se situa el raton sobre el icono, el identificador de la ventana que va a recibir los mensajes de el icono y el tipo de mensaje el icono de enviar a esta ventana.
usos
& nbsp & nbsp & nbsp & nbsp & nbsp ..., ShellAPI
& nbsp & nbsp const
& nbsp & nbsp & nbsp & nbsp WM_ICONTRAY = WM_USER 1 // mensaje definido por el Usuario
& nbsp & nbsp tipo de
& nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp & nbsp & nbsp NotifyIconData : TNotifyIconData
& nbsp & nbsp aplicacion
& nbsp & nbsp procedure TForm1.FormCreate(Sender: TObject)
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp con NotifyIconData empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp hIcon := Icono.Mango
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp StrPCopy(szTip, Aplicacion.El titulo)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Wnd := Identificador
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp uCallbackMessage := WM_ICONTRAY
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp uID := 1
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp uFlags := NIF_MESSAGE NIF_ICON NIF_TIP
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp cbSize := sizeof(TNotifyIconData)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp Shell_NotifyIcon(NIM_ADD, @NotifyIconData)
& nbsp & nbsp final
MANEJO ICONO de MENSAJES
Form1 recibira WM_ICONTRAY mensajes desde el icono. Para capturar y controlar estos mensajes tenemos para declarar un nuevo metodo en nuestro formulario. Por ejemplo:
tipo
& nbsp & nbsp & nbsp & nbsp TForm1 = class(TForm)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp & nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp { Private declarations }
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp procedimiento Icontray(var Msg: TMessage) mensaje WM_ICONTRAY
& nbsp & nbsp & nbsp & nbsp publica
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp { Public declarations }
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp & nbsp & nbsp final
En la aplicacion de este metodo podemos, por ejemplo, mostrar un menu emergente cuando el usuario haga clic en el icono. Suponiendo que usted ha creado un menu emergente nombre PopupMenu1, el codigo siguiente se hara el truco:
procedure TForm1.Icontray(var Msg: TMessage)
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp CursorPos : TPoint
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si Msg.lParam = WM_RBUTTONDOWN, a continuacion, empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp GetCursorPos(CursorPos)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp PopupMenu1.Popup(CursorPos.x, CursorPos.y)
& nbsp & nbsp & nbsp & nbsp end else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp heredado
& nbsp & nbsp final
MOSTRAR Y OCULTAR EL FORMULARIO
Normalmente se incluyen un elemento de menu en el menu emergente para mostrar el formulario, asi que todo lo que tienes que hacer es escribir un controlador de eventos para llamar al metodo Mostrar de la forma y, opcionalmente, eliminar el icono de la bandeja del sistema:
procedure TForm1.mnuShowClick(Sender: TObject)
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Mostrar
& nbsp & nbsp & nbsp & nbsp // Shell_NotifyIcon(NIM_DELETE, @NotifyIconData)
& nbsp & nbsp final
Cuando el usuario cierra el formulario, por ejemplo, puede ocultar que en lugar de cerrarlo y opcionalmente mostrar el icono en la bandeja del sistema si se ha eliminado cuando se hizo visible el formulario. Por ejemplo:
procedure TForm1.FormClose(Sender: TObject var Accion: TCloseAction)
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Accion := caNone
& nbsp & nbsp & nbsp & nbsp Ocultar
& nbsp & nbsp & nbsp & nbsp // Shell_NotifyIcon(NIM_ADD, @NotifyIconData)
& nbsp & nbsp final
el ACABADO de LA APLICACION
Usted puede tener un elemento de menu en el menu emergente para salir de la aplicacion. En este caso usted tiene que escribir un controlador de eventos para el evento click para quitar el icono y el acabado de la aplicacion:
procedure TForm1.mnuExitClick(Sender: TObject)
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Shell_NotifyIcon(NIM_DELETE, @NotifyIconData)
& nbsp & nbsp & nbsp & nbsp Aplicacion.ProcessMessages
& nbsp & nbsp & nbsp & nbsp Aplicacion.Terminar
& nbsp & nbsp final
El codigo fuente completo del ejemplo de este articulo puede ser descargado de:
http://www.latiumsoftware.com/download/d00035.zip
Inicio de una aplicación como un icono en la bandeja del sistema
By Consejos Y Trucos
Inicio de una aplicación como un icono en la bandeja del sistema : Multi-millones de consejos para hacer su vida más fácil.