Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2010-06

Evitar abrir la aplicación 2 veces

7 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

José Antonio Cuello

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.

Alguien me puede indicar como hacer al arrancar el programa para mirar si ya est� abierto. Gracias y un saludo.

________________________________________________________________________

ARTEX TRADING S.A.
Jos� Antonio Cuello Principal

Reply by email

christian Ortiz
to José Antonio Cuello

El 23 de junio de 2010 02:14, Jos� Antonio Cuello <josea en artextrading.com>escribi�:

Hola,

Hola

Show quoted text 5 lines
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

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...

Show quoted text 15 lines
________________________________________________________________________ ARTEX TRADING S.A. Jos� Antonio Cuello Principal _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
Christian ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20100623/f4a39f09/attachment.html>

Reply by email

José Mejuto
to José Antonio Cuello: Hola, quisiera controlar que en las pdas no me abran 2 veces el programa de gesti�n, de…

Hello Jos�,

Wednesday, June 23, 2010, 9:14:50 AM, you wrote:

JAC> Hola, quisiera controlar que en las pdas no me abran 2 veces el programa JAC> de gesti�n, de manera que la segunda vez que se abre el programa JAC> devuelva el foco a la aplicaci�n ya existente y se cierre la nueva JAC> instancia del programa.

JAC> Alguien me puede indicar como hacer al arrancar el programa para mirar JAC> si ya est� abierto. Gracias y un saludo.

Pascal:

http://wiki.lazarus.freepascal.org/UniqueInstance

C y otros:

http://geekswithblogs.net/BruceEitman/archive/2009/01/06/windows-ce-preventing-multiple-instances-of-an-application.aspx

http://www.flounder.com/nomultiples.htm

Best regards, Jos�

Reply by email

lazarus en differware.net
to christian Ortiz: El 23 de junio de 2010 02:14, Jos� Antonio Cuello <josea en artextrading.com>escribi�:

El 23/06/10 16:19, christian Ortiz escribi�:

Show quoted text 16 lines
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 Mutex0 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?

Show quoted text 35 lines
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

Reply by email

José Mejuto
to lazarus en differware.net

Hello lazarus,

Wednesday, June 23, 2010, 4:59:01 PM, you wrote:

ldn> Por cierto, �por qu� no veo mis mensajes a la lista? ldn> �Tengo que hacer algo en especial?

Creo que eso nos pasa a todos.. Supuestamente hay una configuraci�n en el mailman de la lista, pero yo no la he encontrado :-? Vaya ahora si que lo he encontrado :) A ver si este me llega a la lista :)

Best regards, Jos�

Reply by email

José Antonio Cuello
to José Mejuto: JAC> Hola, quisiera controlar que en las pdas no me abran 2 veces el programa JAC> de…

Gracias. He probado el componente y no me ha ido bien. Me detecta que hay uno activo pero no me ejecuta el evento Message del que est� activo. Esto en Win32, porque en la PDA ni siquiera reconoce que hay otro en ejecuci�n.

Mir�ndo el c�digo fuente he simulado con el simpleIP client/server y he conseguido que me funcionase en Windows, incluido el SendMessage que recoge el Server, pero en la PDA no funciona.

De momento he bloqueado que no se pueda minimizar forzando el retorno del foco a la ventana activa.

Haber que tal va ...

Gracias de nuevo.

El mi�, 23-06-2010 a las 16:39 +0200, Jos� Mejuto escribi�:

Show quoted text 11 lines

________________________________________________________________________

ARTEX TRADING S.A.
Jos� Antonio Cuello Principal

Reply by email

José Antonio Cuello
to lazarus en differware.net: El 23/06/10 16:19, christian Ortiz escribi�: ein ?? Creo que no lo entendiste,…

Tiene buena pinta, en cuanto pueda har� pruebas ... Muchas gracias.

El mi�, 23-06-2010 a las 16:59 +0200, lazarus en differware.net escribi�:

Show quoted text 25 lines
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 Mutex0 then CloseHandle(Mutex); end; end;

________________________________________________________________________

ARTEX TRADING S.A.
Jos� Antonio Cuello Principal

Reply by email