var HandleMutex : THandle;
function IsRunning : Boolean;
begin
result := true;
SetLastError(NO_ERROR);
if OpenMutex(MUTEX_ALL_ACCESS,false,pChar('MonMtx'))<>0 then exit;
HandleMutex := CreateMutex(Nil,true,pChar('MonMtx'));
if HandleMutex = 0 then ShowMessage('Erreur de Mutex')
else result := false;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
if IsRunning then Halt;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if HandleMutex <> 0 then ReleaseMutex(HandleMutex);
end;