Page 1 of 1

Como evitar que un progama (exe) se ejecute mas de una vez ?

Posted: Mon Feb 11, 2008 6:41 pm
by Blessed
Saludos amigos del foro; tengo esta inquietud para evitar que un programa (exe) se ejecuta en mas de una ocasion.
Me sucede mucho con mis clientes, que al minimizar una de mis aplicaciones, vuelven a ejecutar una vez tras otra.
Creo que lei algo por ahi, hace tiempo, pero no recuerdo donde...

Saludos desde Honduras :D

Posted: Mon Feb 11, 2008 6:46 pm
by FWHISHOW
function main()

IF ISEXERUNNING( CFILENAME( HB_ARGV( 0 ) ) )
msginfo("SGR JÁ ESTÁ SENDO EXECUTADO !!!")
RETURN
ENDIF

...

return(nil)



Espero ter ajudado!

Posted: Mon Feb 11, 2008 8:50 pm
by GUSPRE
Si se esta ejecutando sale y maximiza la aplicación abierta.-

Code: Select all

*---------Chequer SI GESTIONER ESTA CARGADO ---
IF IsExeRunning( cFileName( HB_ARGV( 0 ) ) )
   ShowApplication()
	 QUIT
ENDIF
*----------------------------------------------

Code: Select all

FUNCTION ShowApplication()

LOCAL hWnd := FindWnd("Titulo Ventana Principal")

IF hWnd != nil
	 IF isIconic( hWnd )
	 		showWindow( hWnd, SW_RESTORE )
	 ENDIF
   SetForeGroundWindow( hWnd )
ENDIF

RETURN NIL

Posted: Tue Feb 12, 2008 11:47 am
by karinha
Por favor, donde esta esto? FindWnd ????? Esto nos es una FUNCTION()???

Code: Select all

    LOCAL hWnd := FindWnd( "Titulo Ventana Principal" )

Posted: Tue Feb 12, 2008 12:12 pm
by GUSPRE
aca va saludos,

Code: Select all

*---------------------------------------------------------*
FUNCTION FindWnd( cTitle )

LOCAL hWnd := GetWindow( GetDesktopWindow(), GW_CHILD )

WHILE hWnd != 0
      IF Upper( cTitle ) $ Upper( GetWindowText( hWnd ) )
         RETURN hWnd
			ENDIF
      hWnd = GetWindow( hWnd, GW_HWNDNEXT )
ENDDO

RETURN NIL

Posted: Tue Feb 12, 2008 12:20 pm
by Andrés González
Revisa en ejemplos ShowApp.prg alli la tienes

Re: Como evitar que un progama (exe) se ejecute mas de una v

Posted: Tue Feb 12, 2008 12:21 pm
by Marcelo Via Giglio
Hola,

busca la clase tmutex es para eso

saludos

Marcelo
Blessed wrote:Saludos amigos del foro; tengo esta inquietud para evitar que un programa (exe) se ejecuta en mas de una ocasion.
Me sucede mucho con mis clientes, que al minimizar una de mis aplicaciones, vuelven a ejecutar una vez tras otra.
Creo que lei algo por ahi, hace tiempo, pero no recuerdo donde...

Saludos desde Honduras :D

Posted: Tue Feb 12, 2008 12:58 pm
by karinha
GUSPRE wrote:aca va saludos,

Code: Select all

*---------------------------------------------------------*
FUNCTION FindWnd( cTitle )

LOCAL hWnd := GetWindow( GetDesktopWindow(), GW_CHILD )

WHILE hWnd != 0
      IF Upper( cTitle ) $ Upper( GetWindowText( hWnd ) )
         RETURN hWnd
			ENDIF
      hWnd = GetWindow( hWnd, GW_HWNDNEXT )
ENDDO

RETURN NIL
Gracias amigo,

Ahora, tu respuesta esta completa.

Very Good!

Saludos.

Gracias

Posted: Tue Feb 12, 2008 9:05 pm
by Blessed
Saludos amigos del foro:

Gracias por el interes a todos :o


Un abrazo desde desde Honduras :D