Creo que puedo estar matando moscas a cañonazos, pero podemos usar un hook.
Código Delphi
[-]
var
Hook: HHook;
function KeyboardProc(Code: Integer; WParam, LParam: DWORD): LRESULT; stdcall;
begin
if Code = HC_ACTION then
begin
if LParam and $C0000000 = $40000000 then
begin
Result:= 1;
Exit;
end;
end;
Result := CallNextHookEx(Hook, Code, WParam, LParam);
end;
Para instalar y desinstalar el hook usamos las siguientes instrucciones:
Código Delphi
[-]
Hook := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, 0, GetCurrentThreadId);
if Hook <> 0 then UnhookWindowsHookEx(Hook);
Coloca esas dos instrucciones en el lugar adecuado, en los eventos OnCreate y OnClose, por ejemplo, o en sección intialization/finalization.
Código Delphi
[-]
initialization
Hook := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, 0, GetCurrentThreadId);
finalization
if Hook <> 0 then UnhookWindowsHookEx(Hook);