La misma función que hemos visto en el caso anterior puede ser usada para evitar que un programa externo se cargue mós de una vez. 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 come 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.
* 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
Pablo Roca
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.