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