Регистрация горячих системных клавиш

Советы » Клавиши » Регистрация горячих системных клавиш

  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) 


Unit1; interface


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


Msg: TWMHotKey); message

WM_HOTKEY; public

{ Public declarations } end

; var

Form1: TForm1; implementation

{$R *.dfm} // Trap Hotkey Messages procedure


Msg: TWMHotKey); begin


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. }

Другое по теме:




Copyright © 2023 - All Rights Reserved - www.delphirus.com