O tratamento de múltiplas instâncias do executável é uma praticamuito útil, principalmente quando não queremos que os usuários trabalhem com mais de uma instância de nossas aplicações.
Ja vi muitas gambiarras bizzarras e pouco elegantes para resolver esse problema, neste tutorial vou mostrar uma maneira simples e elegante pare resolver de uma vez por todas esse prblema:
Declare a variável global
var
{...} HMutex: THandle; //Essa variável deve ser GLOBAL
No onCreate do seu form digite o seguinte código
Var
{...} FileName : PChar;
begin
{...}FileName := PChar( ExtractFilePath( Application.Exename ) );
{...} HMutex := createMutex(nil, True, FileName);
{...}if ( HMutex = 0 ) or ( GetLastError = ERROR_ALREADY_EXISTS ) then
{...}{...}raise Exception.Create('O programa já está em execução.');
(* Restante da sua lógica.... *)
end;
No on close
ReleaseMutex( HMutex );
Pronto.
Para saber mais: Exclusão Mútua ( Mutex )
: Win32 Error codes
Pesquise no Blog
terça-feira, 26 de fevereiro de 2008
Evitar múltiplas instâncias do Programa
Postado por
Anônimo
às
22:06
2
comentários
Marcadores: Intermediário
Assinar:
Postagens (Atom)