FoxPro/Visual FoxPro - Ejecutar en segundo plano

   
Vista:
Imágen de perfil de Eduardo

Ejecutar en segundo plano

Publicado por Eduardo (78 intervenciones) el 19/04/2015 23:50:29
Necesito hacer un programa que se ejecute en segundo plano, lo que significa que el ejecutable corra pero que sea totalmente transparente al usuario.

Sobre el proceso lo que busco es una conexión ftp para subir/bajar archivos sin que el usuario tenga ante sí la pantalla de Visual Fox o que por error cierre la aplicación.

Cualquier ayuda se agradece
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ejecutar en segundo plano

Publicado por Juan López (100 intervenciones) el 20/04/2015 12:01:33
Buenas Eduardo

Para que el usuario no pueda tocar en el formulario, se me ocurre que en el formulario que lances el FTP mientras esté corriendo pongas la característica .Visible = .F. y después que termina lo vuelves a poner a .T., quizás sea un parche, pero a lo mejor para lo que necesitas, te sirva.

En cuanto a lo del FTP, hay un mensaje en el foro sobre algo similar que es posible que te dé una idea de por dónde empezar o que lo puedas llegar a adaptar a tu caso particular: http://www.lawebdelprogramador.com/foros/FoxPro-Visual-FoxPro/580654-FTP-en-VFP.html

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Eduardo

Ejecutar en segundo plano

Publicado por Eduardo (78 intervenciones) el 20/04/2015 16:36:52
Gracias. Pero seguiría con el problema que el usuario se toparía con la pantalla de VFP cada vez que haga ctrl-tab.

Por lo del FTP todo bien, no tengo problemas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejecutar en segundo plano

Publicado por Diego Farra (25 intervenciones) el 20/04/2015 22:19:07
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 *
**************************************************
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Eduardo

Ejecutar en segundo plano

Publicado por Eduardo (78 intervenciones) el 20/04/2015 22:36:28
Muchas gracias, la idea me gusta. Voy a trabajarla a ver si me da los resultados que necesito.


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejecutar en segundo plano

Publicado por wences (4 intervenciones) el 09/06/2016 16:31:00
crea un ejecutable en otra carpeta con un config.fpw donde añades :

screen=OFF *** no se muestra la pantall
RESOURCE = OFF *** no usa fichero de recursos
RESOURCES = OFF

ya no se verá nada ni abajo ni en ningún otro sitio ... será transparente ... puedes además crear una tarea programada si se ejecuta periodicamente y no se enterará nadie de que está funcionando ... tengo unas cuantas de ese estilo funcionando sin problemas y de manera totalmente trasparente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar