Lenguaje de programación Borland Delphi
En este truco impide ejecutar una aplicación dos veces. Con esta utilidad cuando una aplicación esté ejecutándose, no podrá volver a ejecutarse una segunda instancia hasta que se cierre la primera. De esta forma garantizamos que una aplicación sólo se ejecute una vez al mismo tiempo.
Para impedir que una aplicación se ejecute dos veces en el mismo equipo a la vez utilizaremos la función del API de Windows CreateMutex. Con ella desarrollaremos una función que devolverá "True" si la aplicación cuyo título se le pasa como parámetro está ejecutándose ya y "False" si no se está ejecutando:
Uses Windows;
function ejecutadaYa (nombreAplicacion : string) : boolean;
var
MiMutex : Thandle;
begin
mimutex := CreateMutex(nil, true, pchar(nombreAplicacion));
if MiMutex = 0 then
result := false
else
begin
if GetLastError = ERROR_ALREADY_EXISTS then
result := true
else
result := false;
end;
end;
Un ejemplo de utilización de esta función podría ser:
program Campo;
uses
Forms,
dialogs,
windows,
UnidadMenuPrincipal in 'UnidadMenuPrincipal.pas' {FormMenuPrincipal},
UnidadProcedimientos in 'UnidadProcedimientos.pas';
{$R *.RES}
var
nombreaplicacion : string;
begin
nombreaplicacion := 'Control de Campo';
if ejecutadaYa (nombreAplicacion) then
begin
messagedlg(nombreaplicacion + ' ya está abierta, ' +
'maximícela desde la barra de tareas de Windows.', mtinformation,
[mbok],0);
application.Terminate;
halt;
exit;
end;
Application.Initialize;
Application.CreateForm(TFormMenuPrincipal, FormMenuPrincipal);
Application.Title := 'Control de Campo';
Application.HelpFile := 'AYUDA.HLP';
Application.Run;
end.
En este caso la función "ejecutadaYa" se encuenta en la unidad "UnidadProcedimientos.pas", con lo cual se hace una llamada a la misma pasando como parámetro el título/nombre de la aplicación. Si la función devuelve verdadero avisamos al usuario y cerramos la aplicación.
La función "ejcutadaYa" se coloca antes de la cláusula "Application.Initialize", en la unidad .dpr de la aplicación (primera unidad en ejecutarse al iniciar la aplicación, es la que arranca la misma).
Publicado el: 2004-07-24