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

Создаём системную горячую клавишу

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

Создаём системную горячую клавишу

В некотором царстве в некотором государстве на 39 уровне жил был Кащей Бесcмертный и было у него 4 жизни и лабиринт, а смерть его была ctrl+alt +delete. Тут и сказочке Esc, а кто не понял F1.


{ 
  The following example demonstrates registering hot keys with the 
  system to globally trap keys. 
} 

unit Unit1; 

interface 

uses 
  Windows, Messages, Forms, Dialogs; 

type 
  TForm1 = class(TForm) 
    procedure FormCreate(Sender: TObject); 
    procedure FormDestroy(Sender: TObject); 
  private 
    // Hotkey Ids 
    id1, id2, id3, id4: Integer; 
    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY; 
    { Privat-Declarations} 
  public 
    { Public-Declarations} 
  end; 

var 
  Form1: TForm1; 

implementation 

{$R *.DFM} 

// Trap Hotkey Messages 
procedure TForm1.WMHotKey(var Msg: TWMHotKey); 
begin 
  if Msg.HotKey = id1 then 
    ShowMessage('Ctrl + A was pressed !'); 
  if Msg.HotKey = id2 then 
    ShowMessage('Ctrl + Alt + R was pressed !'); 
  if Msg.HotKey = id3 then 
    ShowMessage('Win + F4 was pressed !'); 
  if Msg.HotKey = id4 then 
    ShowMessage('Print Screen was pressed !'); 
end; 


procedure TForm1.FormCreate(Sender: TObject); 
  // Different Constants from Windows.pas 
const 
  MOD_ALT = 1; 
  MOD_CONTROL = 2; 
  MOD_SHIFT = 4; 
  MOD_WIN = 8; 
  VK_A = 65; 
  VK_R = 82; 
  VK_F4 = 115; 
begin 
  // Register Hotkey Ctrl + A 
  id1 := GlobalAddAtom('Hotkey1'); 
  RegisterHotKey(Handle, id1, MOD_CONTROL, VK_A); 

  // Register Hotkey Ctrl + Alt + R 
  id2 := GlobalAddAtom('Hotkey2'); 
  RegisterHotKey(Handle, id2, MOD_CONTROL + MOD_Alt, VK_R); 

  // Register Hotkey Win + F4 
  id3 := GlobalAddAtom('Hotkey3'); 
  RegisterHotKey(Handle, id3, MOD_WIN, VK_F4); 

  // Globally trap the Windows system key "PrintScreen" 
  id4 := GlobalAddAtom('Hotkey4'); 
  RegisterHotKey(Handle, id4, 0, VK_SNAPSHOT); 
end; 

// Unregister the Hotkeys 
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  UnRegisterHotKey(Handle, id1); 
  UnRegisterHotKey(Handle, id2); 
  UnRegisterHotKey(Handle, id3); 
  UnRegisterHotKey(Handle, id4); 
end; 

end. 

{ 
  RegisterHotKey fails if the keystrokes specified for the hot key have 
  already been registered by another hot key. 
   
  Windows NT4 and Windows 2000/XP: The F12 key is reserved for use by the 
  debugger at all times, so it should not be registered as a hot key. Even 
  when you are not debugging an application, F12 is reserved in case a 
  kernel-mode debugger or a just-in-time debugger is resident. 
}

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

Описание кода:

  1. Процедура WMHotKey - обработчик сообщения WM_HOTKEY, которое отправляется окну при нажатии горячей клавиши.
  2. В процедуре FormCreate зарегистрируются четыре горячие клавиши:
    • id1: Ctrl+A
    • id2: Ctrl+Alt+R
    • id3: Win+F4
    • id4: Print Screen (VK_SNAPSHOT)
  3. Функция RegisterHotKey используется для регистрации каждой горячей клавиши. Она принимает четыре параметра:
    • Handle: handle окна, которое будет получать сообщение WM_HOTKEY, когда горячая клавиша нажата
    • id: уникальный идентификатор для горячей клавиши
    • fsModifiers: набор модификаторов (например, Ctrl, Alt, Shift), которые должны быть нажаты вместе с кодом виртуальной клавиши
    • vk: код виртуальной клавиши (например, A, R, F4)
  4. Процедура FormDestroy вызывается при закрытии формы и отменяет регистрацию всех четырех горячих клавиш.

Обратите внимание, что на Windows NT4 и Windows 2000/XP клавиша F12 зарезервирована для использования отладчиком в любое время, поэтому она не должна быть зарегистрирована как горячая клавиша.

Создание системной горячей клавиши с помощью Delphi для задачи глобального trapping клавиш.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:52:27/0.0055649280548096/1