sexta-feira, 19 de outubro de 2007

Dica: Permitir apenas uma instância da aplicação.

As vezes necessitamos limitar a abertura de apenas uma instância da nossa aplicação. O objetivo aqui é demonstrar como fazer isso:

Abra o fonte do seu arquivo DPR e adicione na uses as seguintes units:

uses
System, Windows,
...


E codifique como o exemplo abaixo

var
Instancia: THandle;
begin
Instancia:= CreateMutex(nil, false, 'InstanciaIniciada');
if WaitForSingleObject(
Instancia, 0) = wait_Timeout then
begin
Application.MessageBox('Atenção o programa já está aberto!.','Atenção',MB_ICONINFORMATION);;
Exit;
end;

Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

Nesse exemplo criamos um objeto do tipo THandle chamado
instancia, em seguida instanciamos o objeto com o nome da nossa janela (InstanciaIniciada), a apartir dai verificamos se já existe uma instância rodando com WaitForSingleObject, caso exista exibimos a mensagem para o usuários e fechamos a aplicação.

2 comentários:

Anônimo disse...

valeu gente boa, me socorreu numa hora de aperto aki.

Dirceu Henchen disse...

Valeu....
boa dica, achei na hora certa

dirceu henchen
www.ecocentauro.com.br