Hotkeys - гарячі клавіші - the delphi

HotKeys - гарячі клавіші

HotKeys - комбінації клавіш, на які може реагувати додаток, навіть якщо воно не має фокусу або запущено в треї.
Hotkey складається з клавіші-модифікатора (Win, Alt, Control, Shift), і натискання на будь-яку іншу клавішу, яка має віртуальний код.

Для того щоб навчити програму обробляти гарячі клавіші, заглибимося в загадкові джунглі API, але раніше цього створимо обробник події WM_HOTKEY. Для цього оголосимо в класі TForm1 наступний метод: private І визначимо його ось таким чином: В цьому прикладі обробник повідомлення WM_HOTKEY перевіряє, чи є отримані параметри сигналом про натискання комбінації Alt-F10, і в разі позитивної відповіді в заголовок вікна головної форми виводиться відповідний рядок . Тепер звернемося безпосередньо до створення гарячої клавіші - в нашому прикладі це буде все та ж Alt-F10. Спочатку її потрібно зареєструвати в системі. Як це робиться? За допомогою функції:

BOOL RegisterHotKey (HWND hWnd, int id, UINT fsModifiers, UINT vk);
hWnd - вікно, обробляє повідомлення WM_HOTKEY,
fsModifiers - модифікатори (MOD_ALT, MOD_CONTROL, MOD_SHIFT, MOD_WIN),
vk - віртуальний код клавіші (див. константи з префіксом VK_).


Параметр id заслуговує на окрему розмову. Для додатка значення id може лежати в діапазоні 0000h..BFFFh, а для поділюваних динамічних бібліотек діапазон буде таким: C000h..FFFFh. Проте, щоб уникнути конфліктів між гарячими клавішами різних процесів доцільно використовувати значення, що повертається функцією GlobalAddAtom, передаючи їй як параметр якусь null-terminated рядок довжиною до 255 символів.

Ось як це робиться:
Оголосимо глобальну змінну keyid: integer;
Вона стане атомом, який створиться вищеописаною функцією, і буде служити ідентифікатором гарячої клавіші. Для зручності помістимо на форму дві кнопки - перша буде створювати HotKey, друга - знищувати. Отже, створюємо і реєструємо гарячу клавішу: А наступний код скасовує зареєстровану клавішу, і видаляє атом: Розглянемо ще один важливий аспект роботи з клавіатурою - спосіб відстеження стан клавіш Num Lock, Caps Lock, Scroll Lock і Insert. Ясна річ, що стандартними засобами Delphi тут не обійтися. Будемо знову розкопувати API. По-перше, задамо змінну Key типу word. Цієї змінної можемо привласнити значення однієї з констант:
VK_NUMLOCK
VK_CAPITAL
VK_SCROLL
VK_INSERT

Тепер: Програмне перемикання розкладки клавіатури - якщо Microsoft Word це вміє, то чому не спробувати і нам? ActivateKeyboardLayout (0, HKL_NEXT) - циклічно переключає розкладку.
Завантажити російську можна за допомогою коду: а англійську Ось, мабуть, і всі премудрості роботи з клавіатурою.

Ось і все, Удачі!

Схожі статті