Ver Mensaje Individual
  #1  
Antiguo 10-08-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Reputación: 22
ixMike Va por buen camino
Question Problemilla con Hook

Hola.

Veréis, en un programa que estoy haciendo tengo una barra de estado (TStatusBar), y en los paneles 3 y cuatro muestro el estado de las teclas BloqMaysu y BloqNum. Antes esto lo hacía con la función GetKeyState, y con un TTimer (cada 50 ms checkeaba el estado de las teclas y actualizaba la barra).

Hasta que descubrí los ganchos de teclado (Hooks). Encontré en el club una forma de hacerlos. La prueba funcionaba de maravilla, pero al ponerlo en práctica en mi programa, no funciona.

El código que tengo es este:

Código Delphi [-]
type
  TfrmPrincipal = class (TForm)
  {...}
  public
  Procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
  end;
 
{...}
 
procedure TfrmPrincipal.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.Message=WM_HOTKEY then
  begin
  If GetKeyState(VK_CAPITAL)=1 then Barra.Panels[3].Text:='MAYUS' else Barra.Panels[3].Text:='';
  If GetKeyState(VK_NUMLOCK)=1 then Barra.Panels[4].Text:='NUM' else Barra.Panels[4].Text:='';
  end;
end;
 
{...}
 
initialization
  RegisterHotKey(Application.Handle,GlobalAddAtom('mked_1.00b_HotKey_bloqM'), 0, VK_CAPITAL);
  RegisterHotKey(Application.Handle,GlobalAddAtom('mked_1.00b_HotKey_bloqN'), 0, VK_NUMLOCK);
 
finalization
  UnRegisterHotKey(Application.Handle,GlobalAddAtom('mked_1.00b_HotKey_bloqM'));
  UnRegisterHotKey(Application.Handle,GlobalAddAtom('mked_1.00b_HotKey_bloqN'));

¿Alguien podría decirme qué pasa?

Gracias.
Responder Con Cita