Tomado de
www.Portalfox.com
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.
Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________