FoxPro/Visual FoxPro - Evitar que la aplicacion se ejecute dos veces

 
Vista:

Evitar que la aplicacion se ejecute dos veces

Publicado por Edwin Escobar (1 intervención) el 28/03/2002 10:21:33
Quiero hacer que una aplicacion en VISUAL FOXPRO 6.0 no se pueda ejecutar mas de una vez, pues al hacerlo me da error en las bases de datos. Y no quiero que trabaje en red... asi como en visual basic que se puede evitar con el objeto app.previnstance...
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

RE:Evitar que la aplicacion se ejecute dos veces

Publicado por ROD (184 intervenciones) el 28/03/2002 19:48:15
Hola como estas?

En fox existe un pequeño truco para solucionar este problema.
aqui te va el codigo, debes ponerlo al iniciar tu aplicacion.
******************************************************************************
IF _EstaActiva("El caption de tu aplicacion")
MESSAGEBOX("La aplicación, ya esta activa imposible cargar nuevamente",16,"Error al cargar apliacación")
CANCEL
ENDIF

FUNCTION _EstaActiva(tcCaption)
DECLARE INTEGER FindWindow in WIN32API;
STRING cNULL,;
STRING cWinName
RETU FindWindow(0,tcCaption)# 0
ENDFUNC
******************************************************************************
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

RE:Evitar que la aplicacion se ejecute dos veces

Publicado por Tomas Alberto (20 intervenciones) el 29/03/2002 03:26:18
-- Aqui va otra mas completa que encontre por alli, solo que no me acuerdo para poner los creditos correspondientes --

LOCAL nHWD
DECLARE INTEGER FindWindow IN WIN32API ;
STRING cNULL, ;
STRING cWinName

DECLARE SetForegroundWindow IN WIN32API ;
INTEGER nHandle

DECLARE SetActiveWindow IN WIN32API ;
INTEGER nHandle

DECLARE ShowWindow IN WIN32API ;
INTEGER nHandle, ;
INTEGER nState

nHWD = FindWindow(0, cCaption)
IF nHWD > 0
* VENTANA YA ACTIVA (el programa ya se esta ejecutando)
_screen.visible = .f.
=Messagebox("No se puede ingrese, el programa ya se encuentra ejecutandose",0+64,"Mensaje")
ShowWindow(nHWD,9)

* LA PONEMOS ENCIMA
SetForegroundWindow(nHWD)

* LA ACTIVAMOS
SetActiveWindow(nHWD)
RETURN .T.
ELSE
* VENTANA NO ACTIVA
RETURN .F.
ENDIF
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

RE:Evitar que la aplicacion se ejecute dos veces

Publicado por JORGE GONZALEZ (2 intervenciones) el 30/06/2005 22:38:55
si deseas resolver tu problema has lo que yo esto es una forma mas sencilla y funcion yo mismo la cree es haci

IF FILE('C:\VENTAS_GB\WOP.WPR')
MESSAGEBOX("La aplicación, ya esta activa imposible cargar nuevamente",16,"Error al cargar apliacación")
QUIT
ELSE
SET PRINTER TO C:\VENTAS_GB\WOP.WPR
SET DEVI TO PRINTER
@0,0 SAY "SI"
SET DEVI TO SCREEN
SET PRINTER TO
ENDIF

solo copialo y reemplaza el nombre de direcctorio por el de tu sistema y mantienes el nombre de archivo o cambias el nombre no importa la cuestion es que en el formulario que cierra tu sistema recuerda borrar el archivo con la misma direccion para que el programa se pueda abrir la primera ves el comando es

DELETE FILE C:\VENTAS_GB\WOP.WPR

ves que sencillo pruebalo y si te funciona bien por ti
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

RE:Evitar que la aplicacion se ejecute dos veces

Publicado por ruben dario avalos (1 intervención) el 03/01/2013 00:48:46
Estuve pensando mucho y no encontre la solucion, gracias me funciono perfectamente. Ahora bien por ti tambien!!!!
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

RE:Evitar que la aplicacion se ejecute dos veces

Publicado por fernando (5 intervenciones) el 15/11/2021 00:20:45
Muchisimas gracias!!!, TAN SIMPLE Y TAN EFECTIVA, (despues de 1789422 intentos)
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
sin imagen de perfil
Val: 309
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:Evitar que la aplicacion se ejecute dos veces

Publicado por SANTIAGO JUAN (551 intervenciones) el 15/11/2021 15:33:12
Hola, en realidad no te va a funcionar siempre, el momento en el que por alguna razón el programa se interrumpa, el archivo no se destruirá y cuando quieras ingresar no podrás porque te dirá que el sistema ya está en uso.

Suerte.
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
sin imagen de perfil
Val: 147
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:Evitar que la aplicacion se ejecute dos veces

Publicado por zarlu (97 intervenciones) el 15/11/2021 17:38:39
Buenos días Fernando!

Concuerdo con el colega Santiago Juan.
Ese truco de crear/eliminar el archivo lo uso para bloquear el sistema. Con un módulo de desbloqueo por interrupciones.
Para lo que requieres mejor usa la Api FInwindow()

Ejemplo:
lCapAct="aquí el caption de la ventana de tu aplicación"&&considera mayúsculas y minúsculas
Declare Integer FindWindow In Win32API Integer, String
IF FindWindow(0,lCapAct)<>0&&si ya esta abierta
*rutina si la encuentra
EndIf

Suerte
zarlu
Chetumal, Quintana Roo, México
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