[Lazarus-es] Evitar abrir la aplicación 2 veces

lazarus en differware.net lazarus en differware.net
Mie Jun 23 16:59:01 CEST 2010


El 23/06/10 16:19, christian Ortiz escribió:
>
>
> El 23 de junio de 2010 02:14, José Antonio Cuello
> <josea en artextrading.com <mailto:josea en artextrading.com>> escribió:
>
>     Hola,
>
> Hola
>
>     quisiera controlar que en las pdas no me abran 2 veces el programa
>     de gestión, de manera que la segunda vez que se abre el programa
>     devuelva el foco a la aplicación ya existente y se cierre la nueva
>     instancia del programa.
>
> No trabajes con clases estaticas, creala en tiempo de ejecucion y usas
> la funcion assign para ver si esta creada o no

ein ??
Creo que no lo entendiste, Christian.

En pda no se como irá, pero supongo que igual que en win32.
Tienes varias formas o soluciones y todas se basan en lo mismo: si la 
bandera esta arriba, ya te estabas ejecutando.

Te enumero algunas posibles:
1. Usando un Mutex.
2. Usando un semaforo.
3. Usando un fichero temporal a modo de semaforo.
...

Personalmente suelo usar la primera forma en la siguiente manera:

Program p1;

[..]

var Mutex: THandle;
begin
   Mutex := CreateMutex(nil, true, 'mimutex');
   if (Mutex = 0) or (GetLastError = ERROR_ALREADY_EXISTS) then
   begin
     // si estoy aqui, es que ya me estaba ejecutando...
   end else
   begin
     // aqui, soy el unico con ese mutex!
     [..]
	codigo de la aplicacion
     [..]

     // destruimos el mutex
     if Mutex<>0 then
       CloseHandle(Mutex);
   end;
end;

No se que tal se verá...
Por cierto, ¿por qué no veo mis mensajes a la lista?
¿Tengo que hacer algo en especial?

>
>
>     Alguien me puede indicar como hacer al arrancar el programa para mirar
>     si ya está abierto. Gracias y un saludo.
>
> si no esta asignada la creas, si es lo contrario. solo la muestras...
>
>
>
>     ________________________________________________________________________
>
>     ARTEX TRADING S.A.
>     José Antonio Cuello Principal
>
>
>
>
>     _______________________________________________
>     Lazarus-es mailing list
>     Lazarus-es en lists.lazarus.freepascal.org
>     <mailto:Lazarus-es en lists.lazarus.freepascal.org>
>     http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
>
>
> --
> Christian
>
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es





More information about the Lazarus-es mailing list