有定义热键的好方法吗?

wbamboo 2001-07-19 08:40:40
有一FORM,其上有多个控件,欲定义一热键,不论焦点在何处时,此热键均能有效。
以前的我总是隐藏一菜单,再将菜单项的属性设为此热键,总感觉这方法不好,请问各位高手,有什么其他好方法?
...全文
131 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Java_SCU 2001-07-19
  • 打赏
  • 举报
回复
对头,上面的代码在你的窗体没有焦点的情况下也是能够执行的,所以称作Global HotKey!
数字蛋糕 2001-07-19
  • 打赏
  • 举报
回复
RegisterHotKey是一个全局的热键设置。就算是你的窗体没有获得焦点,WM_HOTKEY事件也能发生。是个比较有用的东东。
phoenix96_2000 2001-07-19
  • 打赏
  • 举报
回复
为控件加外观名字,用TLabel的属性FocusControl连接上控件的焦点
就是用“&”方式的方法
Java_SCU 2001-07-19
  • 打赏
  • 举报
回复
Register Global HotKey:
1.first to declare the message funciton

procedure WMhotKey(var Message: TMessage); message WM_HOTKEY;

2.
var
id: ATOM;

procedure TForm1.FormCreate(Sender: TObject);
begin
id := GlobalAddAtom('GetScreenColor_HotKey_F12');
if not RegisterHotKey(Form1.Handle, id, 0, $7B) then //Register F12
ShowMessage('Can not Register HotKey!');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if not UnregisterHotKey(Form1.Handle, id) then
ShowMessage('Can not Unregister HotKey!');
GlobalDeleteAtom(id);
end;

procedure TForm1.WMhotKey(var Message: TMessage);
begin
if HIWORD(Message.lParam) = $7B then
begin
//do what u want
end;
end;

hpn_cao 2001-07-19
  • 打赏
  • 举报
回复
用hook捕获键盘的输入

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧