interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } F_Key1: Integer; public { Public declarations } procedure WMhotkeyhandle(var msg: Tmessage); message WM_HOTKEY; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin F_Key1 := GlobalAddAtom(PChar('UserDefineHotKey')) - $C000; RegisterHotKey(Handle, F_Key1, 0, VK_F4); //RegisterHotKey(Handle, F_Key1, MOD_ALT, VK_F4); //RegisterHotKey(Handle, F_Key1, MOD_ALT + MOD_CONTROL, VK_F4); //RegisterHotKey(Handle, F_Key1, MOD_WIN, VK_F4); end; procedure TForm1.FormDestroy(Sender: TObject); begin UnregisterHotKey(Handle, F_Key1); GlobalDeleteAtom(F_Key1); end; procedure TForm1.WMhotkeyhandle(var msg: Tmessage); begin ShowMessage('HotKey: VK_F4 Pressed.'); end; afx_msg LRESULT OnHotKey(WPARAM wParam, LPARAM lParam); ON_MESSAGE(WM_HOTKEY, OnHotKey) RegisterHotKey(GetSafeHwnd(),m_HKID1,MOD_ALT | MOD_CONTROL,VK_F3); RegisterHotKey(GetSafeHwnd(),m_HKID2,MOD_ALT ,VK_F4); UnregisterHotKey(GetSafeHwnd(),m_HKID1); UnregisterHotKey(GetSafeHwnd(),m_HKID2); LRESULT CSignleDoc_View::OnHotKey(WPARAM wParam, LPARAM lParam) { SetForegroundWindow(); if (wParam==m_HKID1) { MessageBox("Hello ALT+CTRL+F3 !"); } else if (wParam==m_HKID2) { MessageBox("Hello ALT+CTRL+F4 !"); } return 1; }