Olá galera, vamos a esta Quick Tip que tem como objetivo mostrar uma maneira de impedir o fechamando do nosso projeto com o uso do ALT + F4.
Para isso vamos precisar declarar uma procedure na seção private da classe do nosso formulário. Listagem 1: Declaração da procedure

type
  TForm1 = class(TForm)
  private
    { Private declarations }
    procedure AppMessage(var Msg: TMSG; var HAndled: Boolean);
  public
    { Public declarations }
  end; 
Neste momento vamos implementar a mesma usando o CTRL + SHIF + C, em cima da declaração da procedure AppMessage.
Listagem 2: Implementação da procedure AppMessage

procedure TForm1.AppMessage(var Msg: TMSG; var HAndled: Boolean);
begin
  Handled := False;
  case Msg.Message of
    WM_SYSKEYDOWN:
      if Msg.wParam = VK_F4 then
        Handled := True; // Bloqueia o ALT+F4
  end;
end;
Por final vamos ver como usar a nossa procedure, para isso vamos implementar o evento onCreate do Formulário, onde vamos fazer um Method Pointer apontando o onCreate para o AppMessage, para isso veja o seguinte código.
Listagem 3: Implementação do onCreate

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage := AppMessage;
end;
Quando você executar o seu projeto, tente fechar o mesmo usando ALT+F4, veja que nada irá acontecer. Você pode melhorar o código dando uma mensagem para o usuário da seguinte maneira. Listagem 4: Incrementando a procedure AppMessage

procedure TForm1.AppMessage(var Msg: TMSG; var HAndled: Boolean);
begin
  Handled := False;
  case Msg.Message of
    WM_SYSKEYDOWN:
      if Msg.wParam = VK_F4 then
      begin
        Handled := True; // Bloqueia o ALT+F4
        ShowMessage('Tecla ALT+F4 foi bloqueada pelo administrador.');
      end;
  end;
end;


Fico por aqui e até a próxima.

Um abraço
Wesley Y
www.lithic.com.br