如何定义一个全局快捷键

时间:2010-03-03 17:32:34  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:     RegisterHotKey(handle, HotKey_F1, 0, vk_F1); //F1(3)、处理热键消息:      procedure WndProc(var msg: TMessage);      begin         if Message.LParamHi=vk_F1 then showmessage('F1被按下');  &n...
  正文:定义全局快捷键的基础步骤如下:

1)、定义全局变量
      hotkey_F1: integer;
(2)、注册热键(窗口激活时)
      hotkey_F1 :=GlobalAddAtom('hotkey1');
      RegisterHotKey(handle, HotKey_F1, 0, vk_F1); //F1
(3)、处理热键消息:
      procedure WndProc(var msg: TMessage);
      begin
         if Message.LParamHi=vk_F1 then showmessage('F1被按下');
      end;
(4)、注销热键(窗口关闭时)
      UnRegisterHotKey(handle, HotKey_F1);      //F1

源码如下:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
   procedure WndProc(var Message: TMessage); override;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  hotkey_F1: integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  hotkey_F1 :=GlobalAddAtom('hotkey1');
  RegisterHotKey(handle, HotKey_F1, 0, vk_F1); //F1
end;

procedure TForm1.WndProc(var Message: TMessage);
begin
  Inherited;
  if Message.LParamHi=vk_F1 then showmessage('F1被按下');
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  UnRegisterHotKey(handle, HotKey_F1);      //F1
end;

end.

"如何定义一个全局快捷键"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/13030.html


关键字:

关于《如何定义一个全局快捷键》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td