Delphi中注册全局热键的话,可能有第三方实现,我也没有去找,因为全局热键这个操作不复杂,就调用几个API就可以了。也比较简单,也没有进行封装,我做了一个测试的功能,就是按下快捷键后,弹出一个界面。完整的代码如下,以备他人或以后参考。

unit unitMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, unitCSHotkey, ExtCtrls, RzPanel, StdCtrls, RzLstBox, RzLabel, RzEdit,
  RzTabs;

type
  TFormMain = class(TForm)
    pnl_Right: TRzPanel;
    pnl_Top: TRzPanel;
    pnl_Split: TRzPanel;
    tab_Main: TRzTabControl;
    mmo_Main: TRzMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    FHotkey: TCSHotKey;
  public
    procedure hotykey(var msg:TMessage); message WM_HOTKEY;
  end;

var
  FormMain: TFormMain;
  GLBMainHotKey: integer;

implementation

{$R *.dfm}

{ TFormMain }

 

procedure TFormMain.FormCreate(Sender: TObject);
begin
  GLBMainHotKey:=GlobalAddAtom(‘GLBMainHotKey’)-$C000;
  RegisterHotKey(Self.Handle,GLBMainHotKey, MOD_ALT, 90);
end;

procedure TFormMain.FormDestroy(Sender: TObject);
begin
  UnRegisterHotKey(Self.Handle, GLBMainHotKey);
  GlobalDeleteAtom(GLBMainHotKey);
end;

procedure TFormMain.hotykey(var msg: TMessage);
begin
  if (msg.LParamLo=MOD_ALT) and (msg.LParamHi=90) then
  begin
    Application.BringToFront;
  end;
end;

end.

GlobalAddAtom那里别忘了减去一个$C000,因为减了之后才符合范围规则。并且不要忘记了在程序结束时候释放资源。

另外,这个程序我设置的快捷键是ALT+Z,有兴趣的可以运行试一下。

发表评论

电子邮件地址不会被公开。 必填项已用*标注