Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ¿Cómo usar mutex e impedir dos instancias de la misma app? (https://www.clubdelphi.com/foros/showthread.php?t=59038)

Blaster 11-08-2008 03:57:21

¿Cómo usar mutex e impedir dos instancias de la misma app?
 
Hola, yo estoy haciendo una aplicación con Delphi 7 y me interesa garantizar que mi aplicación se ejecute una sola vez, luego de darle doble clic a un fichero ya asociado con esta en el registro del sistema.

Me explicaré mejor. Yo hago esto hasta ahora:


Código Delphi [-]
  if (ParamCount <> 0)
    then
      begin
        //Copio la direccion entera al archivo abierto
        ArchivoEnteroAbierto:= ParamStr(1);
        ....
        ....
        //Cargo el archivo, hago el resto del trabajo, etc.
        ....
      end;

Yo utilizo ficheros de extensión *.sim, los cuales dentro contienen imagen, datos, etc. Pues bien, yo a través del instalador de mi aplicación logro asociar estos ficheritos a mi aplicación, y cuando le doy doble clic pues esta se ejecuta, se carga la imagen, se emplean los datos, etc, y al parecer todo ok, pero existe un gran problema.

El problema es que si yo le doy doble clic a otro fichero *.sim, pues me abre otra instancia de mi aplicación, y eso yo no quiero que ocurra.

¿Cómo puedo solucionar esto? He leido algo acerca del empleo de un ¿mutex? La verdad es que no sé nada de ello.

Preferiría que:
  1. No se levantase otra instancia de mi aplicación.
  2. Que la que ya estaba abierta detectara que se le dio doble click en otro fichero sim y que cargase en ella misma el nuevo fichero *.sim (al cual se le acaba de dar doble clic)
Si esto no es posible pues me conformaría con que:

1. No se levantase otra instancia de mi aplicación.

Gracias por adelantado.
Bye.
Reinier

Delphius 11-08-2008 04:05:29

Hola Blaster,
En la página web de nuestro compañero Roman, encontrarás una unidad que se encarga de evitar que se ejecute una segunda instancia de tu aplicación.
Concretamente se llama UIApp.

Saludos,


La franja horaria es GMT +2. Ahora son las 16:44:30.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi