Как глобально перехватить нажатие клавиши или комбинации клавиш?
|
Для примера, перехватим комбинацию ALT + CONTROL + ENTER.
Сначала регистрируем горячую клавишу:
bool RHKret = RegisterHotKey(Form1->Handle, // Handle окна, которому отправлять сообщения WM_HOTKEY 0x00F, // УСЛОВНЫЙ идентификатор горячего ключа MOD_ALT + MOD_CONTROL, // модификаторы VK_RETURN // код клавиши ); if (RHKret) // если всё о'кей { ShowMessage("Hot Key Registred"); }
Затем размещаем на Form1 TApplicationEvents и в OnMessage пишем:
if (Msg.message == WM_HOTKEY) // сообщение наше { if (Msg.wParam == 0x00F) // идентификатор наш { ShowMessage("www.sources.ru"); // громко кричим "уря" } }
Когда горячая клавиша больше не нужна, отключаем ее:
UnregisterHotKey(Form1->Handle, // Handle окна 0x00F // наш идентификатор горячего ключа );
Вариант #2 - хуки: |