Чтобы программа реагировала на нажатие определённых клавиш даже в неактивном состоянии, не обязательно ставить хук на клавиатуру. Можно зарегистрировать свою горячую клавишу, при её нажатии дескриптору, указанному при регистрации, будет отправляться сообщение WM_HOTKEY. Для регистрации горячей клавиши нужно использовать функцию RegisterHotKey(), для снятия регистрации UnregisterHotKey(). Рассмотрим пример: Сперва нужно добавить обработчик сообщений WM_HOTKEY. Для этого напишите в секции private ... private procedure OnHotKey(var Msg: TWMHotKey); message WM_HOTKEY; ... Теперь надо реализовать этот метод. procedure TForm1.OnHotKey(var Msg: TWMHotKey); begin inherited; MessageBeep(0); // Любые действия при нажатии гор. клавиши end; И соответсвенно регистрация/снятие регистрации procedure TForm1.FormCreate(Sender: TObject); begin RegisterHotKey(Handle, Ord('U'), 0, Ord('U')); //регистрац. гор. клавиши U end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin UnregisterHotKey(Handle, Ord('U')); // снятие регистрации end; Обратите внимание, что после регистрации горячей клавиши при её нажатии сообщение будет отправляться только форме, для других приложений клавиша работать не будет до снятия регистрации. При нажатии клавиши U будет раздаваться пик динамика.
|