Tecnobyte Informática

Delphi - Teclado e Mouse

Como programar teclas de atalho do Windows?

Inclua na seção uses: Windows, Dialogs

Problema:

Gostaria de programar algumas teclas de atalho para chamar,
por exemplo, uma calculadora, quando meu aplicativo estiver
aberto. Como fazer?

Solução:

- No evento OnCreate do form coloque o código abaixo:

procedure TForm1.FormCreate(Sender: TObject);
begin
  if not RegisterHotkey(Handle, 1, MOD_CONTROL or MOD_ALT, VK_F11) then
    ShowMessage('Erro ao programar Ctrl+Alt+F11');

  if not RegisterHotkey(Handle, 2, MOD_CONTROL or MOD_ALT, VK_F12) then
    ShowMessage('Erro ao programar Ctrl+Alt+F12');
end;

- No evento OnDestroy do form coloque o código abaixo:

procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnRegisterHotkey(Handle, 1);
  UnRegisterHotkey(Handle, 2);
end;

- Declere a procedure abaixo na seção private:

  private
    procedure WMHotkey(var Msg: TWMHotkey); message WM_HOTKEY;

- Abaixo da palavra implementation escreva a procedure:

procedure TForm1.WMHotkey(var Msg: TWMHotkey);
begin
  case Msg.HotKey of
    1: WinExec('calc.exe', SW_SHOW);
    2: ShowMessage('Ctrl+Alt+F12 foram pressionadas');
  end;
end;

- Execute este programa e experimente pressionar Ctrl+Alt+F11
  ou Ctrl+Alt+F12.

Observações

Se a combinação de teclas já estiver em uso (num atalho, por exemplo), não será possível usá-la em nossa aplicação. Existem outras formas de implementar teclas de atalho em programas escritos em Delphi, mas a forma apresentada é bastante funcional.