Bueno, me voy respondiendo a mi mismo para que quede constancia para otros que necesiten usan HotKeys;
Declaro los HotKey que necesito con la función del API de Windows que esta accesible desde Xailer "RegisterHotKey", tiene 4 parametros;
1.- El Handle de la ventana a la que queremos que avise cuando se pulsa el HotKey
2.- Un numero de HotKey, ya que podemos creara varios para la misma ventana
3.- Aquí le indicamos las Teclas especiales que participan en el HotKey;
- ALT - 0x0001
- CONTROL - 0x0002
- SHIFT - 0x0004
- WINDOWS - 0x0008
Hay un quinto valor, pero segun la documentación en Windows Vista no funciona y no se si funcionara en los siguientes
Sumandolos obtenemos la combinación de teclas ( ALT+CONTROL= 0x0003 ).
Que conste que la de Windos no me ha funcionado, pero hay que probar mas.
4.- La tecla que no es especial del HotKey; es en formato Virtual Key, podeis incontrar una lista aquí
https://msdn.microsoft.com/es-es/librar ... s.85).aspx
En mi caso cree dos HotKey con las combinaciones CONTRO+ALT+9 y CONTROL+ALT+8
RegisterHotKey ( ::Handle, 1, 0x003, 0x39 )
RegisterHotKey ( ::Handle, 2, 0x003, 0x38 )
Ahora tenemos que capturar el mensaje, y aunque nunca lo pense, es lo más facil.
En nuestro Programa tenemos que declarar el metodo que se ejecutara al producirse el EVENTO WM_HOTKEY
METHOD WMHotKey( nId, nParam, Handle )
Y el consiguiente codigo del Metodo
METHOD WMHotKey( nId, nParam, Handle ) CLASS TfrmPulsador
RETURN Nil
Los parametros que nos devuelve el evento WM_HOTKEY son;
nId - El numero de HotKey que le pusimos al crearlo
nParam - Con LoWord nos da las teclas especiales que definimos y con HiWord la tecla no especial (Gracias a José Lalín, la verdad que no tenia ni idea)
Handle - El Handle de la ventana que deberia recibir el Evento ( El mismo que le pusimos al crearlo)
Bueno por ahora funciona bien, el lunes lo probare en el cliente, pero teoricamente deberia funcionar ya que el evento le llega directamente a la ventana que lo declaro y no a otras.
En lo que si que ha ganado ya el programa, es que antes usaba timer para leer periodicamente el teclado y aunque lo pusiera muy rapido aveces tenias que darle dos veces, ahora con los HotKey es instantaneo y el programa no consume tiempo del procesador leyendo el teclado.
Un saludo a todos, ya os contare el lunes como ha ido.