Ejecutar en segundo plano
Lo que se podria hacer es un exe que se ejecute en la barra al lado del reloj como un aporte que encontre por ahi buscando systry vfp de Esteban Bruno.
Local oForm, lcPath
* Abrimos la biblioteca Systray
Set Classlib To (Home() + "Samples\Solution\Toledo\Systray") Additive
* Instanciamos el formulario de ejemplo
oForm = CreateObject("frmMinToTray")
* Verificamos la creación del objeto
If Vartype( oForm ) == "O"
* Si se creó, mostramos el formulario
oForm.Show()
* Iniciamos el bucle de lectura de eventos
Read Events
Else
* Sino, mostramos un mensaje de error
MessageBox( "Ocurrió un problema al crear el formulario", ;
16, "Ejemplo de MinToTray" )
EndIf
* Liberamos la biblioteca
Set Classlib To
* Finalizamos la ejecución
Return
**************************************************
* Definición del formulario de ejemplo *
**************************************************
Define Class frmMinToTray As Form
* Establecemos valores para algunas propiedades
Top = 0
Left = 0
Height = 142
Width = 375
ShowWindow = 2 && - Formulario de Nivel Superior
DoCreate = .T.
Caption = "Ejemplo de MinToTray"
Name = "frmMinToTray"
* Agregamos un CheckBox para definir si se minimizará al Systray o no.
Add Object chkMinToTray As CheckBox With ;
Top = 60, ;
Left = 84, ;
Height = 17, ;
Width = 209, ;
AutoSize = .T., ;
BackStyle = 0, ;
Caption = "Minimizar a la bandeja del sistema", ;
Value = .F., ;
Name = "chkMinToTray"
* Agregamos el manejador de la bandeja del sistema
Add Object oSysTray As SysTray With ;
Top = 0, ;
Left = 0, ;
AddIconToSysTrayAtInit = .F., ;
Name = "oSysTray"
* En el evento Deactivate vamos a codificar la funcionalidad
Procedure Deactivate
Local lcLib As String
With This
* Si el evento Deactivate se disparó por Minizar
* y el CheckBox está tildado, minizamos al SysTray
If .WindowState = 1 And .chkMinToTray.Value
With .oSysTray
* Indicamos el ícono que se mostrará en el SysTray
.IconFile = HOME() + "Graphics\Icons\Misc\Face03.ico"
* Indicamos el texto emergente que se mostrará
.TipText = Thisform.Caption
* Agregamos el ícono al SysTray
.AddIconToSysTray()
EndWith
* Además, ocultamos el formulario
.Visible = .F.
EndIf
EndWith
EndProc
* Atendemos el evento que se dispara por Doble Clic en el Systray
Procedure oSysTray.IconDblClickEvent
With Thisform
* Restauramos el formulario
.WindowState = 0
* y lo hacemos visible
.Visible = .T.
EndWith
* Además, quitamos el ícono del Systray
This.RemoveIconFromSysTray()
EndProc
* Este evento se dispara al cerrar el formulario
Procedure QueryUnLoad
* Salimos del bucle de eventos
Clear Events
EndProc
EndDefine
**************************************************
* Fin de Definición del formulario de ejemplo *
**************************************************