Запросто:
Код:
var //переменные в Юните
hHook: THandle;
VKey:integer;
function LowLevelKeyboardProc(nCode: Integer;
WParam: WPARAM; LParam: LPARAM): LRESULT stdcall;
type
PKbdDllHookStrukt = ^TKbdDllHookStrukt;
_KBDLLHOOKSTRUCT = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: PDWORD;
end;
TKbdDllHookStrukt = _KBDLLHOOKSTRUCT;
const
RPT_WPARAM_DATA = '%s';
RPT_LPARAM_DATA = '%d';
var
StrResult: String;
begin
StrResult := '';
if nCode = HC_ACTION then
Result := CallNextHookEx(hHook, nCode, WParam, LParam);
case WParam of
WM_KEYDOWN: StrResult := Format(RPT_WPARAM_DATA, ['']);
WM_KEYUP: StrResult := Format(RPT_WPARAM_DATA, ['']);
WM_SYSKEYDOWN: StrResult := Format(RPT_WPARAM_DATA, ['']);
WM_SYSKEYUP: StrResult := Format(RPT_WPARAM_DATA, ['']);
end;
StrResult := Format(RPT_LPARAM_DATA, [PKbdDllHookStrukt(LParam)^.vkCode]);
VKey:=strtoint(strresult); //Получаем VKey нажатой клавиши
end;
procedure InstallHook;
const
WH_KEYBOARD_LL = 13;
begin
hHook := SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);
if hHook = 0 then RaiseLastOSError;
end;
procedure RemoveHook;
begin
if not UnhookWindowsHookEx(hHook) then RaiseLastOSError;
end;
Цифровой код передаётся в переменную VKey.
Собственно как теперь мне нреобразовать цифровой код в название нажатой клавиши?