Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как зарегистрировать горячие клавиши?

Delphi , ОС и Железо , Клавиши

Вот код о том как назначить горячие клавиши если даже активна другая программа. Код взят из рассылки "Мастера DELPHI. Новости мира компонент, FAQ, статьи..."

Code:

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
protected
procedure hotykey(var msg:TMessage); message WM_HOTKEY;
end;
 
var
Form1: TForm1;
id,id2:Integer;
 
implementation
 
{$R *.DFM}
 
procedure TForm1.hotykey(var msg:TMessage);
begin
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=81) then
begin
ShowMessage('Ctrl + Q wurde gedrьckt !');
end;
if (msg.LParamLo=MOD_CONTROL) and (msg.LParamHi=82) then
begin
ShowMessage('Ctrl + R wurde gedrьckt !');
end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
id:=GlobalAddAtom('hotkey');
RegisterHotKey(handle,id,mod_control,81);
id2:=GlobalAddAtom('hotkey2');
RegisterHotKey(handle,id2,mod_control,82);
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(handle,id);
UnRegisterHotKey(handle,id2);
end;

Взято с Vingrad.ru http://forum.vingrad.ru

Программный код на языке Delphi, демонстрирующий регистрацию горячих клавиш в Windows, даже когда другой программе активна. Код использует функции RegisterHotKey и UnregisterHotKey из Windows API.

Вот подробное описание того, что делает каждый раздел кода:

  1. Процедура hotykey объявлена как обработчик сообщения WM_HOTKEY, которое отправляется приложению, когда горячая клавиша нажата.
  2. В процедуре FormCreate создается два атома с помощью функции GlobalAddAtom, а затем регистрируются две горячие клавиши с помощью функции RegisterHotKey. Первая горячая клавиша - Ctrl + Q, вторая - Ctrl + R.
  3. В процедуре hotykey при нажатии горячей клавиши проверяется, совпадает ли нажатая клавиша с одной из зарегистрированных горячих клавиш (Ctrl + Q или Ctrl + R). Если да, то отображается сообщение с соответствующим текстом.

Код также включает в себя две процедуры: FormCreate и FormDestroy. Процедура FormCreate вызывается при создании формы, а она регистрирует горячие клавиши. Процедура FormDestroy вызывается при уничтожении формы, а она отменяет регистрацию горячих клавиш.

Дополнительные заметки:

  • В Delphi нужно использовать переменную handle для ссылки на хэндл окна приложения.
  • Константа mod_control представляет собой модификатор Ctrl-ключа.
  • Функция GlobalAddAtom добавляет атом (уникальный идентификатор) в глобальную таблицу атомов. Это используется для идентификации горячей клавиши в функциях RegisterHotKey и UnregisterHotKey.

Код должен быть способен регистрировать горячие клавиши, которые работают даже когда другой программе активна, если приложение остается запущенным.

В качестве альтернативных решений есть другие способы регистрации горячих клавиш в Delphi, такие как использование компонента TTimer или создание custom timer. Однако данный подход более прямолинейный и обеспечивает больше контроля над процессом регистрации горячих клавиш.

В статье описывается, как зарегистрировать горячие клавиши в программе на языке Delphi, даже если активна другая программа, с помощью функции RegisterHotKey и обработчика сообщения WM_HOTKEY.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Клавиши ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 12:47:09/0.0049128532409668/1