RE:Cómo evito que se ejecute + de 1 vez???
Publicado por
Alberto (1 intervención) el 16/01/2003 03:21:01
Lo úmico que necesitamos hacer es lo siguiente:
En nuestras primeras líneas de programa ponemos estas líneas de código:
* Antes de ponerle el título a nuestra ventana:
IF F_ActivaWin("Mi programa")
* El programa ya estaba activo:
RETURN && Termina el programa
ENDIF
* Empezamos a definir las características de la ventana principal
* siempre y cuando sea necesario visualizarla.
WITH _SCREEN
* PREPARO LA VENTANA PRINCIPAL
* .WIDTH = ...
* .HEIGHT = ...
* ETC, ETC
*
*
.CAPTION = "Mi programa" && Título de la ventana
.VISIBLE = .T.
ENDWITH
* 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