Ver Mensaje Individual
  #14  
Antiguo 25-11-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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(Handle67MOD_CONTROL67); 
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 &Msgbool &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.
Responder Con Cita