RE:Handle de un formulario
**************************************************************************
*cCaption="Titulo/Caption del Formulario de Nivel Superior
*_NombreFormulario="Nombre del Formulario en Nivel Superior
************************************************************************
FUNCTION ActivaVentana
LParameters cCaption,_NombreFormulario
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
DECLARE INTEGER GetActiveWindow IN user32
DECLARE INTEGER GetWindowDC IN user32 INTEGER hwnd
If PCount()=1
EndIf
_NombreFomulario=''
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
************************************************************************
*aqui coloco el nombre del formulario al que quiero saber si esta
*en ejecucion
************************************
If !Empty(_NombreFormulario)
If FormulOpen(_NombreFormulario)
nHWD=GetActiveWindow()
* VENTANA YA ACTIVA
* LA "LLAMAMOS":
ShowWindow(nHWD,9)
* LA PONEMOS ENCIMA
SetForegroundWindow(nHWD)
* LA ACTIVAMOS
SetActiveWindow(nHWD)
RETURN(.T.)
Else
RETURN(.F.)
EndIf
Else
* VENTANA NO ACTIVA
RETURN .F.
EndIf
ENDIF
Con la función que coloco arriba puedo detectar si un Formulario de Nivel Superior esta activado, pero para un formulario en Nivel Superior tuve que agregar las lineas que estan comentadas como Formulario en Nivel Superior
El problema que tengo es que no se activa la ventana ni la posiciona encima.
Pero seguire buscando. Gracias.