/********************************************************************/
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
/********************************************************************/
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
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...
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: