FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ejecutar otra aplicaci贸n
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Ejecutar otra aplicaci贸n
Posted: Wed Dec 03, 2008 10:30 AM

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

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Ejecutar otra aplicaci贸n
Posted: Wed Dec 03, 2008 11:22 AM

YA INTETASTES CON UN ARCHIVO.BAT??

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Ejecutar otra aplicaci贸n
Posted: Wed Dec 03, 2008 12:23 PM

Hola, si tambi茅n lo he intentado, incluso con un RUN fichero.bat (por desesperacion), pero pasa lo mismo.

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.

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Ejecutar otra aplicaci贸n
Posted: Wed Dec 03, 2008 12:45 PM

MsgWait('Cerrando Aplicacion 2 en todos los terminales','Proceso de mantenimiento',300)

Porque no cambias para un dialogo?? 贸 usas un MSGRUN()??

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Ejecutar otra aplicaci贸n
Posted: Wed Dec 03, 2008 02:51 PM
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.

Y si te haces tu propio 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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Ejecutar otra aplicaci贸n
Posted: Wed Dec 03, 2008 10:13 PM

Podrias no usar salvapantallas, y hacer que tu propia aplicaci贸n simule uno.

En estos foros hemos comentado como hacerlo.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Ejecutar otra aplicaci贸n
Posted: Wed Dec 03, 2008 10:23 PM
// 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
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Ejecutar otra aplicaci贸n
Posted: Wed Dec 10, 2008 08:47 AM

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.

Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Ejecutar otra aplicaci贸n
Posted: Wed Dec 10, 2008 04:52 PM
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

oDlg:bMMoved  = { |nRow, nCol, nFlags| msginfo("Se movio"), oDlg:end() }


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.. :-) :-)
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

Continue the discussion