Как глобально перехватить нажатие клавиши или комбинации клавиш?

Для примера, перехватим комбинацию 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 - хуки:
 
« Предыдущая статья   Следующая статья »