eu faço assim, no dpr:

uses
  Forms,
  Jpeg,
  SysUtils,
  MidasLib,
  Windows,
  Dialogs,
  Messages,
  Classes, etc..

{$R *.res}
var
  MutexHandle: THandle;

function OneInstanceAndRunning: Boolean;
begin
  Result := false;
  if (MutexHandle <> 0) and (GetLastError = ERROR_ALREADY_EXISTS) then
  begin
    MessageDlg('O sistema já está rodando nesta máquina.', mtWarning,
[mbOK], 0);
    Result := True;
  end;
end;

begin
  ShortDateFormat := 'dd/mm/yyyy';
  MutexHandle := CreateMutex(nil, True, 'ComerX');

  // Deixa rodar apenas uma instância do aplicativo
  if OneInstanceAndRunning then
  begin
    CloseHandle(MutexHandle);
    Halt;
  end;
  try
       (..)
  finally
    if LongBool(MutexHandle) then
      CloseHandle(MutexHandle);
  end;

Espero que ajude.

[]s


Em 17/12/07, Herbert Junior <[EMAIL PROTECTED]> escreveu:
>
>   PessoALL, boa tarde.
>
> Estou com um problema na minha aplicação client/server .
>
> O usuário consegue executar (abrir uma nova instância) da aplicação já
> aberta. Ficando assim mais de 1 instância aberta.
>
> Como faço para tratar isso no código e não deixar que o usuário abra uma
> nova instância??
>
> Agradeço desde já.
>
> Herbert Junior
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
_________________________________
T.·.F.·.A.·.
Fellipe Henrique
[EMAIL PROTECTED]


[As partes desta mensagem que não continham texto foram removidas]

Responder a