[DELPHI] APENAS UMA INSTÂNCIA DA APLICAÇÃO EXECUTANDO POR VEZ

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