FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour reiniciar una aplicaci贸n
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
reiniciar una aplicaci贸n
Posted: Fri Oct 28, 2005 10:19 PM

Hola:
Me gustar铆a saber si existe la manera de reiniciar una aplicaci贸n desde dentro de la misma. Hay situaciones como un cambio de idioma, coger datos de configuraci贸n,... que hacen necesario reiniciar la aplicaci贸n, y me gustar铆a saber como se hace.

Saludos,

Posts: 21
Joined: Fri Oct 07, 2005 05:13 AM
Es una forma poco ortodoxa pero me funciona
Posted: Sat Oct 29, 2005 08:11 AM

Es una forma poco ortodoxa pero me funciona,
donde quieras que se reinicie tu aplicaci贸n,
1潞 llamas a un exe que va a volver a llamar a tu aplicaci贸n
2潞 te sales de la aplicaci贸n

Espero te sirva,
Saludos

.... tu codigo de tu aplicacion ...
Ejecuta("LlamaNuevoExe.EXE )
ErrorLevel(3)
PostQuitMessage(0)
__Quit()
.... fin

--- LlamaNuevoExe.EXE ---
// LLamaNuevoExe.prg s贸lo tiene una funci贸n y es llamar a tu aplicaci贸n.
function LlamaNuevoExe()
Ejecuta("TuAplicaci贸n.EXE")
Return nil

-- Function Ejecuta --


  • Ejecutar Programas Externos *

FUNCTION Ejecuta(cEjecuta, lSeparate)
LOCAL hInstance
DEFAULT lSeparate TO .F.
IF IsWinNT()
IF lSeparate
hInstance := WinExec("cmd.exe /c start /SEPARATE "+cEjecuta ,0)
ELSE
hInstance := WinExec("cmd.exe /c start "+cEjecuta ,0)
ENDIF
ELSE
hInstance := WinExec("Start "+cEjecuta ,0)
ENDIF
RETURN hInstance

Dpto.Desarrollos eTi

Jes煤s D铆ez Gonz谩lez

Villajoyosa (Alicante)
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
re:
Posted: Sun Oct 30, 2005 04:03 PM

Gracias Jes煤s. Lo que quiero hacer es que el mismo exe se llame a si mismo. Lo que me propones est谩 bien, pero no es lo que quiero hacer.

Saludos,

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
reiniciar una aplicaci贸n
Posted: Sun Oct 30, 2005 06:42 PM

Jose Luis,

Con WinExec() podr铆as volver a ejecutar el EXE, luego darle foco a la nueva aplicaci贸n y finalmente terminar la primera.

De un modo esquem谩tico ser铆a asi:

WinExec( <aplicacion> )
SetFocus( <ventana_principal_aplicacion_nueva_instancia> )
<ventana_principal>:End()

Asi terminar铆a la actual, y la nueva quedar铆a activa.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
reiniciar una aplicaci贸n
Posted: Sun Oct 30, 2005 07:18 PM

Antonio:

驴 y como le doy foco a la nueva instancia de la aplicaci贸n ?

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
reiniciar una aplicaci贸n
Posted: Sun Oct 30, 2005 07:47 PM

Puedes usar FindWindow() para encontrar el handle de la ventana.

Posiblemente habr铆a que esperar un poco desde que arrancas la aplicaci贸n con WinExec() hasta que la ventana se crea y est谩 visible.

Habr铆a que revisar las opciones de WinExec() 贸 usar alguna funci贸n que aguarde un cierto tiempo (Sleep(), bucle con SysRefresh(), etc.)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion