Регистрация горячих системных клавишDelphi , ОС и Железо , КлавишиРегистрация горячих системных клавиш
Оформил: DeeCo { The following example demonstrates registering hotkeys with the system to globally trap keys. Das Folgende Beispiel zeigt, wie man Hotkeys registrieren und darauf reagieren kann, wenn sie gedruckt werden. (systemweit) } unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } id1, id2, id3, id4: Integer; procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY; 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 pressed !'); if Msg.HotKey = id2 then ShowMessage('Ctrl + Alt + R pressed !'); if Msg.HotKey = id3 then ShowMessage('Win + F4 pressed !'); if Msg.HotKey = id4 then ShowMessage('Print Screen 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 = $41; VK_R = $52; VK_F4 = $73; 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); GlobalDeleteAtom(id1); UnRegisterHotKey(Handle, id2); GlobalDeleteAtom(id2); UnRegisterHotKey(Handle, id3); GlobalDeleteAtom(id3); UnRegisterHotKey(Handle, id4); GlobalDeleteAtom(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. Процедура Процедура Для отмены регистрации горячих клавиш при закрытии приложения мы используем процедуру Некоторые примечания к коду:
В целом, код предоставляет основной пример регистрации и обработки глобальных горячих клавиш в приложении на Delphi. Регистрация горячих системных клавиш позволяет создать глобальные события для обработки различных комбинаций клавиш в Windows-приложении, включая контрольные клавиши Ctrl, Alt и Win, а также системную клавишу Print Screen. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |