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