Подписаться на RSS рассылку
Главная » Статьи по Delphi » Клавиатура » Глобальная горячая клавиша

Глобальная горячая клавиша

Автор: Black Soft

Чтобы программа реагировала на нажатие определённых клавиш даже в неактивном состоянии, не обязательно ставить хук на клавиатуру. Можно зарегистрировать свою горячую клавишу, при её нажатии дескриптору, указанному при регистрации, будет отправляться сообщение 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 будет раздаваться пик динамика.

Просмотров: 10402

Обсудить на форуме

0   Спам
(19.08.2010)
3. Aktivizion
А как сделать условие для определенной нажатой клавиши, допустим

Если нажата горяч.Клавиша то выполнять это, и так далее
p.s некропост ><


0   Спам
(01.03.2010)
2. Raptus
Чтоб юзать в комбинации с другими клавишами, нужно указывать параметр-модификатор

RegisterHotKey(Handle, VK_F12, 2, VK_F12); // Ctrl + F12
...
RegisterHotKey(Handle, VK_F4, 8, VK_F4) // WinKey + F4


0   Спам
(01.03.2010)
1. Сергей (Xaker)
А как можно использовать данный код с компонентом HotKeys? что то пробовал но не выходит( А именно с каким либо модулем..(Control Alt Shift...)


Имя *:
Email:


Код *:

Copyright © 2008-2016 Программирование на Delphi для начинающих и не только

Полнота авторских прав на все материалы, опубликованные на сервере DelphiDevelop.ru принадлежит их авторам

Перепечатка материалов разрешается с указанием авторства и гиперссылки на первоисточник информации

Хостинг от uCoz

Автор проекта: Борисов Сергей

e-mail: save-x@yandex.ru

Связь с администрацией сайта