Page 1 of 1

Evitar cargar + de una vez la aplicación

Posted: Tue Apr 25, 2006 6:50 pm
by dbzap
En 16bits se hacia con SET MULTPLE...
Pero en 32... como se evita la segunda carga del EXE ?
Saludos

Re: Evitar cargar + de una vez la aplicación

Posted: Tue Apr 25, 2006 7:30 pm
by wmormar
dbzap wrote:En 16bits se hacia con SET MULTPLE...
Pero en 32... como se evita la segunda carga del EXE ?
Saludos
lRunning := IsExeRunning( "FACTURACION" )

Regresa un lRunning

Posted: Tue Apr 25, 2006 7:42 pm
by dbzap
Gracias !!

Posted: Tue May 16, 2006 9:15 pm
by RodolfoRBG
Si tengo el mismo EXE en 2 o mas carpetas diferentes, como le hago para que se pueda correr el mismo EXE de otra carpeta pero que no se corra mas de una vez el de la misma carpeta?

Posted: Tue May 16, 2006 9:22 pm
by dbzap
Tas mu shiko pa'preguntar esas kosas...

Posted: Tue May 16, 2006 9:29 pm
by RodolfoRBG
No has oido hablar de los niños genios? :lol: jajaja, solo agregale bigote y barba y soy yo (bueno, eso dice mi esposa).

Ya te burlaste de mi pero .... la respues es....?

Posted: Tue May 16, 2006 9:50 pm
by dbzap
No tengo la respuesta, mi pregunta era debido a que nuestro sistema es re-grande entonces los tipos abrian por aqui y por alla y queria evitar el problema con mis archivos temporales.
Solo Eso.
Suerte

Posted: Tue May 16, 2006 11:50 pm
by Raymundo Islas M.
Hola

En este momento no tengo a la mano el nombre del colega del foro, que nos posteo esto :

IF IsExeRunning( cFileName( HB_ARGV(0) ) )
MsgInfo( 1, "NO ES POSIBLE EJECUTAR EL MODULO ADM DEL SISTEMA" + CRLF + ;
"YA QUE ESTA ACTUALMENTE EN OPERACION.",,,, )
QUIT
ENDIF


Y de esta manera, me ha funcionado barbaro !!


Saludos

Posted: Wed May 17, 2006 12:01 am
by RodolfoRBG
Ray, gracias por tu observación, el problema es que, con esta instruccion, si en la misma computadora se trabajan 2 empresas diferentes (una en cada carpeta independiente con un exe en cada carpeta) no las pueden trabajar al mismo tiempo y yo lo que quiciera es que solo no abran (por error) el mismo exe de la misma carpeta.

Alguna otra sugerencia?

Posted: Wed May 17, 2006 7:57 am
by Antonio Linares
Rodolfo,

HB_ARGV(0) devuelve tambien el path del EXE.

Posted: Wed May 17, 2006 9:55 pm
by RodolfoRBG
Gracias Antonio, pero...

Si uso:

IF IsExeRunning(HB_ARGV(0))
? "El ejecutable ya esta en uso, Se aborta el sistema."
RETURN(NIL)
ENDIF

me permite continuar trabajando con el mismo EXE en la misma carpeta y en este caso deseo que me avise y no lo haga.

Posted: Thu May 18, 2006 2:53 am
by Vikthor
DbZap :

Puedes usar la clase TwCapture y la puedes descargar de http://vikthor.com.mx/fivewin

Code: Select all

 /*
    Verifica si ya se está ejecutando una instancia de la misma aplicación.
   */
   oWnd := TWCapture():New()
   oWnd:WCapture( "Sistema de Registro y Control de Eventos" )
   IF oWnd:lCaptured      // La aplicación ya está corriendo
      MsgStop("El sistema ya está cargado","Aviso del sistema")
      RETURN( Nil )
   ENDIF

Posted: Thu May 18, 2006 4:40 am
by Manuel Valdenebro
Yo utilizo la misma solución (artesana) desde hace muchos años (Clipper 87) con excelente resultado:

Al inicio del programa abro un dbf en EXCLUSIVE donde generalmente guardo información de la estación (por ejemplo, el path del servidor) y del propio usuario, pero igualmente podría ser una dbf vacia. Si el dbf ya esta abierto, aborta el programa.


USE IMPRESOR EXCLUSIVE NEW

IF NETERR()
ALERT(" ¡¡¡ El programa está ya abierto")
QUIT
ENDI

De esta manera, duplicar el exe en la misma carpeta, pero te permite aperturarlo desde otra.