Использую глобальный хук WM_KEYBOARD_LL, для отлова сообщений о нажатых клавишах. Как при нажатии определённой клавиши отменить её действие, а лучше, переназначить его? Пример: нажали NUM PAD 5, получили 'n'. Иными словами, программное переназначение клавиши. P.S.: пробовал WH_GETMESSAGE, но он ловит только сообщения текущей программы. P.S.S.: пробовал отменить так,но не получилось:
keybd_event(key, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);
Для отмены нажатия клавиши, функция LowLevelKeyboardProc должна вернуть ненулевое значение. Чтобы сгенерировать свое событие нажатие клавиши, можно использовать SendInput
LRESULT CALLBACK LowLevelKeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT* details = (KBDLLHOOKSTRUCT*) lParam;
INPUT ip;
if(code == HC_ACTION && wParam == WM_KEYDOWN)
{
if(details->vkCode == code)
{
ip.type = INPUT_KEYBOARD;
ip.ki.time = 0;
ip.ki.wVk = new_code;
ip.ki.dwFlags = 0;
SendInput(1, &ip, sizeof(INPUT));
return 1;
}
}
return 0;
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости