Windows - capturar hotkeys

Top  Previous  Next

Programar teclas de atalho do Windows

 

Problema:

 

  Gostaria de programar algumas teclas de atalho para chamar,

  por exemplo, uma calculadora, quando meu aplicativo estiver

  aberto, MESMO SEM FOCO. Como fazer?

 

Solução:

 

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

 

procedure TForm1.FormCreate(Sender: TObject);

begin

  if not RegisterHotkey(Handle, 10, VK_F11) then 

    ShowMessage('Erro ao programar 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 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.