La mejor forma de hacer un hook al teclado es el de bajo nivel,
WH_KEYBOARD_LL sin dll. Es el primer hook que te mostré.
Las HotKeys funcionan tanto si los mensajes los tratas a nivel de formulario (a bajo nivel, con sobreescritura de la función
WndProc, o capturando mensajes estilo delphi, como capturando los mensajes en TApplication (Application->OnMessage)
Los mensajes WM_HOTKEY reciben en wParam el id usado para registrar la tecla. con dicho id conoces la tecla regictrada. Yo uso como dato de ese id le VK_ de la tecla que registro, así no tengo pérdidas.
Lo siguiente registra Ctl-C:
Código PHP:
RegisterHotKey(Handle, 67, MOD_CONTROL, 67);
Y tratamos de esta manera el mensaje, usando Application->OnMessage, que parece que te gusta más:
Código PHP:
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
if(Msg.message == WM_HOTKEY){
if(Msg.wParam == 67)
Beep();
// else if ......
}
}
Al terminar la APP siempre debes usar
UnregisterHotKey para liberar las HotKeys.
Saludos.