Se puede hacer con una API. Es cuestión de investigarla, no es difícil hallar esa solución. Por lo pronto te puedo decir el modo "a pulmón". Crea una tabla libre que tenga los siguientes campos: CREATE TABLE UsuariosConectados (ID I AUTOINC, Maquina C(40)) Luego en el programa principal invoca una rutina que registre o valide la entrada al sistema de la máquina en uso. FUNCTION RegistrarEntrada IF !USED("UsuariosConectados") USE UsuariosConectados IN 0 ENDIF cNombreMaquina = SUBSTR(ID(),1,AT("#",ID())-2) SELECT UsuariosConectados LOCATE FOR Maquina = cNombreMaquina IF FOUND() MESSAGEBOX("El sistema ya está activo en esta maquina.") QUIT ELSE APPEND BLANK REPLACE Maquina WITH cNombreMaquina ; Use Endif Endfunc Ahora, cuando el usuario salga del sistema, mandas a borrar el registro correspondiente en la tabla UsuariosConectados: DELETE FROM UsuariosConectados WHERE Maquina = SUBSTR(ID(),1,AT("#",ID())-2)
En FoxPro: IF WEXIST("NombreFisicoFormulario") IF NombreFisicoFormulario.Caption = "MI TITULO" MESSAGEBOX("Esta pantalla ya existe") NombreFisicoFormulario.Show Endif Puse la condición del Caption porque eso es lo que entiendo de tu pregunta, que quieres saber si una pantalla con un titulo determinado está abierta. Pero lo que supongo es que quieres saber si una pantalla está abierta para evitar volver a llamarla, y que se muestre si ya ha sido creada, entonces solo usa la primera condición. Alfredo García TSU en Informática TSU