unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } FMyAtom: TAtom; //添加全局热键 CTRL + F1 procedure AddHotKey; //删除全局热键 procedure DeleteHotKey; procedure WMHotKey(var Msg: TWMHotKey); message WM_HotKey; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.AddHotKey; begin FMyAtom := GlobalFindAtom('Hot1'); if FMyAtom = 0 then begin FMyAtom := GlobalAddAtom('Hot1'); if RegisterHotKey(Handle, FMyAtom, MOD_Control, VK_F1) then ShowMessage('Register hot key success!'); end else ShowMessage('CTRL + F1 has been registered'); end;procedure TForm1.DeleteHotKey; begin if FMyAtom <> 0 then begin UnRegisterHotKey(Handle, FMyAtom); GlobalDeleteAtom(FMyAtom); end; end;procedure TForm1.FormCreate(Sender: TObject); begin AddHotKey; end;procedure TForm1.FormDestroy(Sender: TObject); begin DeleteHotKey; end;procedure TForm1.WMHotKey(var Msg: TWMHotKey); begin if Msg.HotKey = FMyAtom then begin ShowMessage('Call from hotkey'); end; end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FMyAtom: TAtom;
//添加全局热键 CTRL + F1
procedure AddHotKey;
//删除全局热键
procedure DeleteHotKey;
procedure WMHotKey(var Msg: TWMHotKey); message WM_HotKey;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.AddHotKey;
begin
FMyAtom := GlobalFindAtom('Hot1');
if FMyAtom = 0 then begin
FMyAtom := GlobalAddAtom('Hot1');
if RegisterHotKey(Handle, FMyAtom, MOD_Control, VK_F1) then
ShowMessage('Register hot key success!');
end else
ShowMessage('CTRL + F1 has been registered');
end;procedure TForm1.DeleteHotKey;
begin
if FMyAtom <> 0 then begin
UnRegisterHotKey(Handle, FMyAtom);
GlobalDeleteAtom(FMyAtom);
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
AddHotKey;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteHotKey;
end;procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
if Msg.HotKey = FMyAtom then begin
ShowMessage('Call from hotkey');
end;
end;
把CRTL+F1 反注册 并注册客户自己设定的热键
UnRegisterHotKey(handle, HotKeyId1);
DeleteAtom(HotKeyID1);
HWND hWnd,
int id,
UINT fsModifiers,
UINT vk
);