RegisterHotKey函数的用法? 各位大虾好!我是初学者,现在在程序中需要自定义热键(比如:Alt+F1,Ctrl+Q),我知道要用到RegisterHotKey函数,但是具体怎么用不清楚,请大家帮帮忙!谢谢。最好能给我点代码参考一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 晕,这个问题……好老的了 -_-#贴给你看看吧……----------------------------------------------------------unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public HotkeyF1,HotKeyF2:integer; procedure WMHotkeyHandle(var Msg: TMessage); message WM_HOTKEY; { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin HotKeyF1:=GlobalAddAtom(pchar('UserDefinsHotKey1'))-$C000; RegisterHotKey(Form1.Handle,HotKeyF1,MOD_ALT ,VK_F1); //alt+F1 HotkeyF2:=GlobalAddAtom(pchar('UserDefinsHotKey2'))-$C000; RegisterHotKey(Form1.Handle,HotkeyF2, MOD_CONTROL ,ord('Q')); //ctrl+qend;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin UnregisterHotKey(Form1.Handle,1); DeleteAtom(HotkeyF1); DeleteAtom(HotkeyF2);end;procedure TForm1.WMHotkeyHandle(var Msg: TMessage);begin if Msg.WParam=HotkeyF1 then ShowMessage('alt+F1'); if Msg.WParam=HotkeyF2 then ShowMessage('ctrl+q');end;end. 试了一下,可以了。多谢大虾!想再请教一下GlobalAddAtom是做什么用的?还有为什么要减去$C000?谢谢! 喜欢用Delphi写winsock的朋友,加入这个群吧:《Delphi网络编程》,号码7714442 请问如何做漂亮的仿XP界面? 如何发布自己的控件包而不泄漏源码? 如何动态添加DBchart的属性(饼型图) 为什么ImageEn做的扫描程序在98下不能用(出错)!!马上结贴!急—— 求救! 关于dbgird的显示和数据库的删除问题? 简单问题,在线等待 用DELPHI编,实现查询EXCEL表在数据库中的表是否存在,不存在则插入数据库表中,请DELPHI高手帮个忙 100分求 tesseract-ocr delphi 怎么调用? 请教高手 如定义全局变量?
贴给你看看吧……
----------------------------------------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
HotkeyF1,HotKeyF2:integer;
procedure WMHotkeyHandle(var Msg: TMessage); message WM_HOTKEY; { Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
HotKeyF1:=GlobalAddAtom(pchar('UserDefinsHotKey1'))-$C000;
RegisterHotKey(Form1.Handle,HotKeyF1,MOD_ALT ,VK_F1); //alt+F1
HotkeyF2:=GlobalAddAtom(pchar('UserDefinsHotKey2'))-$C000;
RegisterHotKey(Form1.Handle,HotkeyF2, MOD_CONTROL ,ord('Q')); //ctrl+q
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnregisterHotKey(Form1.Handle,1);
DeleteAtom(HotkeyF1);
DeleteAtom(HotkeyF2);
end;procedure TForm1.WMHotkeyHandle(var Msg: TMessage);
begin
if Msg.WParam=HotkeyF1 then
ShowMessage('alt+F1');
if Msg.WParam=HotkeyF2 then
ShowMessage('ctrl+q');
end;end.