Vamos utilizar o Mutex para impedir que seja executada mais de uma instância de sua aplicação ao mesmo tempo.
1. Abra o Delphi e crie um novo projeto através do menu File -> New -> VCL Forms Application - Delphi, e altere as propriedade do Form conforme abaixo:
Caption = Principal
Name = Frm_Principal
Position = poDesktopCenter
2. Salve as alterações (File -> Save All), coloque o nome uPrincipal para Unit e Principal para o nome do projeto.
3. Agora acesse o menu Project -> View Source para exibir o código fonte do projeto.
4. Adicione a Unit Windows na seção Uses de seu projeto.
5. Deixe o código do seu projeto igual ao exemplo abaixo:
program Principal;
uses
Forms,
Windows,
uPrincipal in 'uPrincipal.pas' {Frm_Principal};
{$R *.res}
Var
app_Mutex: THandle;
app_Handle: HWND;
begin
// Cria uma "Chave" global para identificar o aplicativo
app_Mutex := CreateMutex(nil, TRUE, PChar('[{8FD2D453-DD74-420D-BE32-BA89CC814D03}]'));
// Verifica se já está aberto
if ((app_Mutex = 0) or (GetLastError = ERROR_ALREADY_EXISTS)) then
begin
CloseHandle(app_Mutex);
// Localiza a aplicação que já está aberta e apresenta na tela
app_Handle := FindWindow('TFrm_Principal', PChar(Application.Title));
if (app_Handle > 0) then
begin
Windows.ShowWindow(app_Handle, SW_SHOWNORMAL);
Windows.SetForegroundWindow(app_Handle);
end;
// Encerra a nova instância da aplicação
Halt;
end;
Application.Initialize;
Application.MainFormOnTaskbar := TRUE;
Application.CreateForm(TFrm_Principal, Frm_Principal);
Application.Run;
end.
6. Pronto, tente executar a aplicação mais de uma vez e veja o resultado.
Gostou? Deixe seu comentário... Convido você a seguir meu blog, sua presença é bem vinda!【ツ】
Nenhum comentário:
Postar um comentário