注册系统级热键


unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs;



type

  TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);

    procedure FormDestroy(Sender: TObject);

  private

    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



var

  HotKeyId: array[0..12] of Integer;  //热键数组, 这里准备定义 13 个热键



procedure TForm1.FormCreate(Sender: TObject);

var

  i: Integer;

begin

  //注册热键

  for i := Low(HotKeyId) to High(HotKeyId) do

    HotKeyId[i] := GlobalAddAtom(PChar(IntToStr(i)));  //热键命名可随意

  RegisterHotKey(Handle,HotKeyId[0],0,VK_F2);                //F2

  RegisterHotKey(Handle,HotKeyId[1],0,VK_UP);                //Up

  RegisterHotKey(Handle,HotKeyId[2],0,VK_DOWN);              //Down

  RegisterHotKey(Handle,HotKeyId[3],0,VK_LEFT);              //Left

  RegisterHotKey(Handle,HotKeyId[4],0,VK_RIGHT);             //Right

  RegisterHotKey(Handle,HotKeyId[5],0,VK_PRIOR);             //PageUp

  RegisterHotKey(Handle,HotKeyId[6],0,VK_NEXT);              //PageDown

  RegisterHotKey(Handle,HotKeyId[7],0,VK_OEM_PLUS);          //+

  RegisterHotKey(Handle,HotKeyId[8],0,VK_OEM_MINUS);         //-

  RegisterHotKey(Handle,HotKeyId[9],0,$31);                  //1

  RegisterHotKey(Handle,HotKeyId[10],0,$41);                 //a

  RegisterHotKey(Handle,HotKeyId[11],0,VK_RETURN);           //Enter

  RegisterHotKey(Handle,HotKeyId[12],MOD_CONTROL,VK_RETURN); //Ctrl+Enter

end;



//热键

procedure TForm1.WMHotKey(var Msg: TWMHotKey);

begin

  if Msg.HotKey = HotKeyId[0] then ShowMessage('F2');

  if (Msg.HotKey=HotKeyId[1]) then ShowMessage('Up');

  if (Msg.HotKey=HotKeyId[2]) then ShowMessage('Down');

  if (Msg.HotKey=HotKeyId[3]) then ShowMessage('Left');

  if (Msg.HotKey=HotKeyId[4]) then ShowMessage('Right');

  if Msg.HotKey = HotKeyId[5] then ShowMessage('PageUp');

  if Msg.HotKey = HotKeyId[6] then ShowMessage('PageDown');

  if Msg.HotKey = HotKeyId[7] then ShowMessage('+');

  if Msg.HotKey = HotKeyId[8] then ShowMessage('-');

  if Msg.HotKey = HotKeyId[9] then ShowMessage('1');

  if Msg.HotKey = HotKeyId[10] then ShowMessage('a');

  if Msg.HotKey = HotKeyId[11] then ShowMessage('Enter');

  if Msg.HotKey = HotKeyId[12] then ShowMessage('Ctrl+Enter');

end;



procedure TForm1.FormDestroy(Sender: TObject);

var

  i: Integer;

begin

  //注销热键

  for i := Low(HotKeyId) to High(HotKeyId) do

  begin

    UnRegisterHotKey(handle,HotKeyId[i]);

    GlobalDeleteAtom(HotKeyId[i]);

  end;

end;



end.


 
   

你可能感兴趣的:(系统)