Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Evitar que el exe se cargue más de 1 ves

1 view
Skip to first unread message

Martin Zamudio

unread,
Oct 16, 2008, 1:50:19 AM10/16/08
to
Saludos amigos.
La pregunta es: ¿Como detecto que el ejecutable VFP esta corriendo?
Esto para evitar que este sea cargado de nuevo.
Ya que me acarrea problemas si sobre el acceso dan varios clicks y el
Ejecutable se carga tantas veces.
Requiero que este solo sea ejecutado 1 sola ves hasta ser cerrado.

/********************************************************************/
No hables si lo que vas a decir no es más hermoso que el silencio.
(Proverbio Árabe)

Martin Zamudio.
Martinz@quita estolive.com.mx
/********************************************************************/

Guillermo Carrero

unread,
Oct 16, 2008, 6:40:58 AM10/16/08
to
Hola Martin:
Yo utilizo la siguiente rutina que la puedes colocar en tu prg
principal:

DECLARE INTEGER FindWindow IN Win32API;
STRING @lpClassName, ;
STRING @lpWindowName
cCaption="Mi aplicación Ver. 1.0"
lnHWnd = FindWindow(0, @cCaption)

IF lnHWnd <> 0
= MESSAGEBOX(cCaption+chr(13)+chr(13)+chr(13)+"Ya se está
ejecutando en este equipo,"+chr(13)+"Puede que esté minimizado en la
barra de tareas."+chr(13), 64, "Aviso")
quit
Endif

Un saludo

Luis María Guayán

unread,
Oct 16, 2008, 7:20:11 AM10/16/08
to
Copiado de PortalFox: http://www.portalfox.com/article.php?sid=228

Verificar si la aplicación está activa

Podemos saber si una aplicación está activa, para ello tenemos la función de
la API:

Busca la ventana activa......: FindWindows

A esta función se le debe pasar como parámetro, el título (caption) de la
aplicación. Este parámetro debe ser exactamente igual al título de la
ventana de la aplicación que queremos verificar:

*----------------------------------------
* FUNCTION IsActive(tcCaption)
*----------------------------------------
* Verifica si una aplicación ya está activa
* USO: ? IsActive("Calculadora")
*----------------------------------------
FUNCTION IsActive(tcCaption)
DECLARE INTEGER FindWindow IN WIN32API ;
STRING cNULL, ;
STRING cWinName
RETURN FindWindow(0, tcCaption) # 0
ENDFUNC
*----------------------------------------
Con esta función podemos comprobar si nuestra aplicación de Visual FoxPro ya
ha sido iniciada en una PC y así no iniciarla nuevamente. Para lograrlo
escribiremos una función que se invoca en el inicio de nuestra aplicación,
luego de haber colocado el título a nuestra ventana principal.

*----------------------------------------
* FUNCTION YaActiva()
*----------------------------------------
* Comprueba que la aplicación no se esta ejecutando
* Invoca a IsActive() descripta anteriormente
*----------------------------------------
FUNCTION YaActiva()
LOCAL llRet, lcCaption
llRet = .F.
lcCaption = _SCREEN.Caption
*--- Renombra temporariamente el caption de la app
_SCREEN.Caption = "_" + lcCaption
IF IsActive(lcCaption)
*--- Si ya esta activo
MESSAGEBOX("Este sistema ya está activo",16,"Aviso")
llRet = .T.
ENDIF
_SCREEN.Caption = lcCaption
RETURN llRet
ENDFUNC

*----------------------------------------

Si la función YaActiva() retorna .T., entonces ya hay una instancia de la
aplicación activa, y debemos cancelar la nueva ejecución.

Otra opción:

-- Comprobar si un programa se está ejecutando --
http://www.portalfox.com/article.php?sid=2072


--
Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos

"Martin Zamudio" <martin_...@live.com.mx> escribió en el mensaje de
noticias:B5120336-5589-4013...@microsoft.com...

Fernando D. Bozzo

unread,
Oct 18, 2008, 11:02:01 PM10/18/08
to
Otra alternativa es usar semáforos de Windows.
Yo antes usaba la búsqueda del caption de la ventana, pero tiene el
problema que no es muy exacto en determinadas situaciones de carga del
sistema y se ejecuta más de una vez el EXE sin reconocer la duplicidad
de ejecuciones.
El semáforo en cambio no depende del caption (que además puede
cambiar).


Un ejemplo de uso:
http://www.news2news.com/vfp/?example=8&function=10

On 16 oct, 07:50, "Martin Zamudio" <martin_zamu...@live.com.mx> wrote:

0 new messages