可以,当时我测试通过,后来改动了一下,有个地方写错了:
procedure TForm1.FormCreate(Sender: TObject);
begin
aatom:=globaladdatom('hot key');
if not RegisterHotKey(handle,aatom,mod_alt,vk_tab) then
showerrormessage;
end;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
aatom:atom;
procedure hotkey(var msg:tmessage);message wm_hotkey;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
aatom:=globaladdatom('hot key');
if not RegisterHotKey(handle,aatom,mod_alt,vk_tab) then
showerrormessage;
end;
procedure TForm1.hotkey(var msg:tmessage);
begin
if (msg.LParamHi=VK_F4) and (msg.LParamLo=MOD_ALT) then
begin
SetForegroundWindow(handle);
showmessage('You Press Alt+F4');
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(handle,aatom);
globalDeleteatom(aatom);
end;
public
procedure WndProc(var Message: TMessage); override;
procedure TForm1.WndProc(var Message: TMessage);
var msg:DWord;
begin
msg:=Message.msg;
case msg of
WM_COMMAND:// youself process
WM_LBUTTONUP:// youself process
WM_HOTKEY:// youself process
...
end;
inherited WndProc(Message);
end;