Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 429

•  TDictionary Custom Sort  5 643

•  Fast Watermark Sources  5 406

•  3D Designer  7 850

•  Sik Screen Capture  5 699

•  Patch Maker  6 188

•  Айболит (remote control)  6 196

•  ListBox Drag & Drop  5 072

•  Доска для игры Реверси  94 095

•  Графические эффекты  6 365

•  Рисование по маске  5 417

•  Перетаскивание изображений  4 579

•  Canvas Drawing  4 963

•  Рисование Луны  4 697

•  Поворот изображения  4 242

•  Рисование стержней  2 989

•  Paint on Shape  2 218

•  Генератор кроссвордов  3 073

•  Головоломка Paletto  2 413

•  Теорема Монжа об окружностях  3 198

•  Пазл Numbrix  2 096

•  Заборы и коммивояжеры  2 740

•  Игра HIP  1 716

•  Игра Go (Го)  1 633

•  Симулятор лифта  1 954

•  Программа укладки плитки  1 685

•  Генератор лабиринта  2 122

•  Проверка числового ввода  1 810

•  HEX View  2 070

•  Физический маятник  1 809

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

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



Оформил: 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. 
}







Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте