☎ +34 976 234 144

Evitar que se lance dos veces la aplicación

FoxPress n.º 141 · julio-agosto de 2006 · Por la Redacción de FoxPress

Artículo publicado en la revista FoxPress en julio-agosto de 2006. Algunos datos, versiones y funciones citados (MySQL, PHP, Visual FoxPro, Windows) pueden haber quedado desfasados.

Un ejemplo sencillo es el de la calculadora de Windows.

Imaginemos que en nuestra aplicación demos la posibilidad de utilizar la calculadora. Pondríamos una línea como esta:

RUN /N CALC.EXE
Pero si esta línea la ejecutamos más de una vez, se cargarás la calcuadora una y otra vez. La ventaja de este código frente a otros semejantes es que en vez de avisarte de que la aplicación ya está abierta, te la pone por delante.
 
 * Antes de activar la calculadora:
 IF NOT F_ActivaWin("Calculadora")
 * La calculadora no está cargada:
 RUN /N CALC.EXE
 ENDIF
 
 * Y ESTA ES LA FUNCION QUE LO HACE TODO:
 *-----------------------------
 FUNCTION F_ActivaWin(cCaption)
 *-----------------------------
 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
   * LA "LLAMAMOS":
   ShowWindow(nHWD,9)
 
   * LA PONEMOS ENCIMA
   SetForegroundWindow(nHWD)
 
   * LA ACTIVAMOS
   SetActiveWindow(nHWD)
   RETURN .T.
 ELSE
    * VENTANA NO ACTIVA
    RETURN .F.
 ENDIF

¿Quieres llevar la IA a los datos de tu empresa?

En una auditoría gratuita de 30 minutos vemos qué caso concreto te ahorraría más trabajo.

Reservar mi auditoría →