Hola a todos.
Tengo una aplicación (aplicación 1), que en un proceso nocturno y desatendido, tiene que ejecutar otra (aplicación 2) para hacer unos procesos de mantenimiento.
Mi problema es que ambas aplicaciones están en el servidor y en la misma carpeta y este normalmente está con el salvapantallas protegido por contraseña, y hasta que no se quita el salvapantallas la aplicación 2 no se ejecuta.
El proceso es mas o menos así:
nhandle := fcreate('CIERRE.XXX') //Se crea el fichero para emitir la orden de cierre de la aplicación 2
fclose(nhandle)
MsgWait('Cerrando Aplicacion 2 en todos los terminales','Proceso de mantenimiento',300) //Se espera 5 minutos de margen para que la Aplicación 2 se cierre, aunque se cierra en 3 minutos a partir de la creación del fichero CIERRE.XXX
winexec('APLICACION2 PRONOCTU')
Tal y como está escrito, cuando quito el salvapantallas, lleve el tiempo que lleve el mismo, me encuentro con el MsgWait en pantalla que desaparece tras cinco minutos de haber quitado el salvapantallas. Es como si el tiempo no contase cuando está el salvapantallas. Bien eso lo puedo solucionar con un Mensage NOWAIT y un bucle de espera.
Mi problema es que pasa lo mismo con el winexec(), que hasta que no quito el salvapantallas no se ejecuta. He probado con Waitrun() y con ShellExecute() y pasa lo mismo. Si no tengo puesto el salvapantallas la aplicación 2 se ejecuta correctamente y ella sola se cierra tras realizar los procesos.
¿ Hay alguna manera de lanzar una aplicación desde otra y que se ejecute aunque esté el salvapantallas ?
Espero haberme explicado, Saludos
Ejecutar otra aplicación
- Sebastián Almirón
- Posts: 125
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
- Sebastián Almirón
- Posts: 125
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
Y si te haces tu propio salvapantallas...Sebastián Almirón wrote:...El problema parece ser que con el salvapantallas todas las ordenes de ejecución de otros programas, o los msgwait(), se quedan pendientes a que se quite el salvapantallas.
Un SCR no es mas que un EXE renombrado.
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Code: Select all
// How to create a screensaver that will be executed when a GET is not used for some time
#include "FiveWin.ch"
static nTime := 0
function Main()
local oDlg, oSay, oGet, cTest := Space( 10 )
DEFINE DIALOG oDlg TITLE "Test"
@ 0.5, 8 SAY oSay PROMPT "Elapsed time: " + AllTrim( Str( nTime ) ) + " secs."
@ 3, 7 GET oGet VAR cTest PASSWORD
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT BuildTimer( oDlg, oSay, oGet )
return nil
function BuildTimer( oDlg, oSay, oGet )
local oTmr
DEFINE TIMER oTmr OF oDlg ;
ACTION ( nTime++, oSay:Refresh(), If( nTime > 14, ScreenSaver(),)) INTERVAL 1000
ACTIVATE TIMER oTmr
oGet:bKeyDown = { | nKey | nTime := 0, nKey }
return nil
function ScreenSaver()
static oDlg
nTime = 0
if oDlg == nil
ShowWindow( FindWindow( "Shell_TrayWnd", "" ), 0 ) // Taskbar
ShowWindow( FindWindow( "Button", "Start" ), 0 ) // Vista round button
DEFINE DIALOG oDlg STYLE WS_VISIBLE COLOR "W/B" SIZE GetSysMetrics( 0 ), GetSysMetrics( 1 )
@ 10, 10 SAY "This is a screensaver" COLOR "W/B"
oDlg:bKeyDown = { || oDlg:End() }
ACTIVATE DIALOG oDlg ;
ON CLICK oDlg:End()
ShowWindow( FindWindow( "Shell_TrayWnd", "" ), 1 )
ShowWindow( FindWindow( "Button", "Start" ), 1 )
oDlg = nil
nTime = 0
endif
return nil
- Sebastián Almirón
- Posts: 125
- Joined: Mon Dec 12, 2005 9:56 am
- Location: Moralzarzal - Spain
Bueno, gracias a todos, ya lo he solucionado.
El problema en si no era la ejecución de programas sino los dialogos. A medida que iba ejecutando procesos y para saber por donde iba mostraba unos MsgRun y otros dialogos que eran los que realmente me dejaban paralizado el programa cuando el salvapantallas estaba en ejecución. La solución ha sido eliminar cualquier dialogo que pudiera aparecer durante el proceso.
Saludos y gracias de nuevo.
El problema en si no era la ejecución de programas sino los dialogos. A medida que iba ejecutando procesos y para saber por donde iba mostraba unos MsgRun y otros dialogos que eran los que realmente me dejaban paralizado el programa cuando el salvapantallas estaba en ejecución. La solución ha sido eliminar cualquier dialogo que pudiera aparecer durante el proceso.
Saludos y gracias de nuevo.
- cuatecatl82
- Posts: 614
- Joined: Wed Mar 14, 2007 6:49 pm
- Location: San Cristobal de las Casas, Chiapas México
- Contact:
Maestro Antonio:
He probado el ejemplo de como aplicar una screensaver en fw, y funciona a la perfección, pero me surge una duda, es posible cerrar el screensaver al mover el mouse y controlar la sensibilidad del movimiento, lo he intentado con
Pero siempre aparece el mensaje sin poder hacer nada..
Creo que me falta revisar más, pero la falta de tiempo me lo impide.
De todas maneras estoy haciendo algunas pruebas para implementarlo en mis aplicaciones, pero solo me falta este pequeño detalle. Creo que ando algo perdido,
Si alguien pudiera darme una idea, se lo agradeceria bastante..
Saludos..
He probado el ejemplo de como aplicar una screensaver en fw, y funciona a la perfección, pero me surge una duda, es posible cerrar el screensaver al mover el mouse y controlar la sensibilidad del movimiento, lo he intentado con
Code: Select all
oDlg:bMMoved = { |nRow, nCol, nFlags| msginfo("Se movio"), oDlg:end() }
Creo que me falta revisar más, pero la falta de tiempo me lo impide.
De todas maneras estoy haciendo algunas pruebas para implementarlo en mis aplicaciones, pero solo me falta este pequeño detalle. Creo que ando algo perdido,
Si alguien pudiera darme una idea, se lo agradeceria bastante..
Saludos..
Soluciones y Diseño de Software
Damos Soluciones...
I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos
http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Damos Soluciones...
I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos
http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon