Ejecutar una aplicación desde delphi

Hola
Mi pregunta es la siguiente estoy haciendo un programa con delphi para
utilizar con touch screen como puedo hacer que no habrá más de una vez el
ejecutable de director utilizo el comando winexec en un botón para abrir la aplicación desde deplhi y hay veces que lo habré más de una vez como lo válido
Gracias

1 respuesta

Respuesta
1
Aunque existen otras maneras, una de las formas más fáciles de evitar dobles instancias de un programa es mediante 'atoms'. Un atom es como una entrada en una lista donde podemos colgar cierta información, por ejemplo, que nuestro programa se encuentra en ejecución. Lo primero que hay que hacer pues es, al arrancar la aplicación verificar que no esté ya presente, en caso de se encuentre en memoria se avisa al usuario de su despiste y se cierra la instancia. La rutina para verificar la presencia de nuestra aplicación podría ser algo así :
function TFrom1.InstanciaPrevia: Boolean;
var AtomText : array[0..30] of char;
FoundAtom : TAtom;
begin
StrFmt(AtomText, 'JustOne%s', ['Nombre Aplicación']);
FoundAtom := GlobalFindAtom(AtomText);
Result := (FoundAtom <> 0);
if Not Result then GlobalAddAtom(AtomText);
end;
Evidentemente, luego al cerrar el programa hay que quitar la 'etiqueta' que nos avisa que estamos en memoria, para ello basta con codificar lo siguiente :
function TFrom1.QuitarMarcadeInstancia: Boolean;
var AtomText : array[0..30] of char;
FoundAtom : TAtom;
begin
StrFmt(AtomText, 'JustOne%s', ['Nombre Aplicación']);
FoundAtom := GlobalFindAtom(AtomText);
if FoundAtom <> 0 then
GlobalDeleteAtom(FoundAtom);
end;
Saludos.
Alonso
(Truco publicado Originalmente en ClubDelphi.com)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas