Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-08-2015
noobdelphi5 noobdelphi5 is offline
Miembro
NULL
 
Registrado: ene 2015
Posts: 22
Poder: 0
noobdelphi5 Va por buen camino
Smile Ejecutar una instancia de un programa solo una vez

Buen día,

Uso delphi 7, lo que quiero hacer es que al ejecutar el archivo .exe solo se pueda abrir la primera vez, al volver abrirlo no lo haga si ya esta abierto. ¿Alguien tiene la solución?

Saludos!!
Responder Con Cita
  #2  
Antiguo 04-08-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Hay dos soluciones a tu problema en la sección de trucos del foro, una de roman y otra de Nelson
Responder Con Cita
  #3  
Antiguo 04-08-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Aquí tienes el link de la unit de Román, de la que se ha hablado muchas veces en los foros.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 04-08-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
noobdelphi5,

Cita:
Empezado por noobdelphi5
...Ejecutar una instancia de un programa solo una vez...


Revisa esta información:
Espero sea útil

Nelson.
Responder Con Cita
  #5  
Antiguo 04-08-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola noobdelphi5.

Otro enlace que te podría interesar:
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 05-08-2015
noobdelphi5 noobdelphi5 is offline
Miembro
NULL
 
Registrado: ene 2015
Posts: 22
Poder: 0
noobdelphi5 Va por buen camino
Smile Solución

Si ya resolví el problema, todas las respuestas me funcionaron, yo use el código de nlsgarcia, el único código que no pude correr fue el de Roman, después lo checo con mas calma, me salía:

[Fatal Error] UIApp_fmx.pas(24): File not found: 'FMX.Forms.dcu'
[Fatal Error] UIApp_fmx.pas(24): File not found: 'FMX.Platform.Win.dcu'

Codigo de eficsa

Código Delphi [-]
program Project1;

uses
  Forms,
  Windows,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

  resourcestring
   SAlreadyRunning =
      'Existe otra instancia activa de esta aplicación.'#13 +
      'La presente instancia se detendrá ahora mismo.';

  function AlreadyRunning(const AIdentifier: string): Boolean;
begin
  CreateMutex(nil, False, PChar(AIdentifier));
  AlreadyRunning := GetLastError = ERROR_ALREADY_EXISTS;
end;

  begin
   if AlreadyRunning('Empresa.Aplicación.Versión') then
   begin
      MessageBox(0, PChar(SAlreadyRunning), 'Error', MB_ICONSTOP or MB_OK);
      Halt(1);
   end;
   Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;

end.


Otra forma:

Código Delphi [-]
program Project1;

uses
  Forms, Windows,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
var
  Mutex : THandle;
begin
  Mutex := CreateMutex(nil, True, 'My_Unique_Application_Mutex_Name'); 
  if (Mutex = 0) OR (GetLastError = ERROR_ALREADY_EXISTS) then
  begin

    // code to searh for, and activate 
    // the previous (first) instance

  end
  else
  begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
    if Mutex  0 then
      CloseHandle(Mutex); 
    end;
  end;
end.

Gracias!!
Responder Con Cita
  #7  
Antiguo 05-08-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
El que te paso Neftali es la version para FireMonkey.

Buscando por el foro no encontre un enlace valido a la pagina de roman (parece estar caida), tampoco en el FTP del club

Lo mas cercano que encontre es esto, aunque no estoy seguro de si es "la ultima version"

De todos modos en el hilo de la version para FireMonkey esta explicado que es lo que cambie para que funcione para FMX; al deshacerse de eso volveria a servir para VCL
Responder Con Cita
  #8  
Antiguo 07-08-2015
noobdelphi5 noobdelphi5 is offline
Miembro
NULL
 
Registrado: ene 2015
Posts: 22
Poder: 0
noobdelphi5 Va por buen camino
AgustinOrtu

Gracias ya lo probé y si funciona.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Solo ejecutar un procedimiento cuando solo la ventana esta activa feliz-58 Varios 4 10-08-2013 19:39:04
No consigo impedir doble instancia del programa dabas OOP 11 30-08-2012 02:53:54
Excel para solo 1 instancia Gamael Hdez Varios 2 25-06-2010 23:47:03
Ejecutar un programa externo desde un programa de Delphi Roger_Fernandez Varios 3 02-09-2004 18:05:36
Ejecutar un programa DENTRO de otro programa seduerey Varios 8 12-11-2003 13:56:20


La franja horaria es GMT +2. Ahora son las 21:58:50.


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
Copyright 1996-2007 Club Delphi