Comprobar si se encuentra en ejecución

Siento darte la paliza, pero tengo otra preguntilla.
Me gustaría que al abrir el programa, comprobase si otra instancia del mismo se encuentra en ejecución, para así mostrar un mensaje que impida abrirlo.
Es decir, que si ya se está ejecutando el programa, al intentar ejecutarlo de nuevo muestre un error y no permita hacerlo.
¿Cómo puedo hacerlo? ¿Este código deberá ir en el OnCreate del Form principal no?
Muchas gracias de nuevo.

1 Respuesta

Respuesta
1
Yo utilizo mútexs (un tipo de semáforo) para comprobarlo. Estas instrucciones van en el formulario principal:
var
FMutexInici: THandle;
procedure TMain.FormCreate(Sender: TObject);
var
vSA: TSecurityAttributes;
begin
vSA.nLength := SizeOf(TSecurityAttributes);
vSA.lpSecurityDescriptor := nil;
vSA.bInheritHandle := True;
FMutexInici := CreateMutex(@vSA, False, 'SOCRDigitalInici');
if GetLastError = ERROR_ALREADY_EXISTS then begin
ShowMessage('Ya existe una instancia de esta aplicación');
Application.Terminate;
end;
end;
procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseHandle(FMutexInici);
end;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas