DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: qiaoguoqiang
今日帖子: 0
在线用户: 2
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 hbqckzj (醉里寻欢) ★☆☆☆☆ -
盒子活跃会员
2004/2/23 10:31:44
标题:
有关热键注册的问题 浏览:1072
加入我的收藏
楼主: 注册系统级热键,据俺所知有两种方法,一种是用RegisterHotKey函数,这个比较简单,另外一种是用sendmessagea函数发送wm_hotkey消息,小弟要问的就是这个

问题是:比如我想用某一组键作为我的程序热键的话,我用如下代码注册
sendmessagea(handle,wm_hotkey,hotkey1.hotkey,0);  

可是注册成功了之后我不知道如何编写代码响应我的热键,好像是通过wparam参数值来判断,还请各位大侠不吝赐教!
----------------------------------------------
秋风清 秋月明,几上闲琴黯生尘。
夜来忽忆少年事,陌上柳绿草青青。
相逢一笑言未语,携手相看自倾心。
二十二载云烟里,云含风韵烟含情。
风尘渺落风霜浸,但闻长空雁长鸣。
姿容如花颜如玉,只在平生梦里寻。
秋风清 秋月明,秋灯秋雨愁煞人。
天涯路远人何在,午夜梦回空扰惊。
作者:
男 hbqckzj (醉里寻欢) ★☆☆☆☆ -
盒子活跃会员
2004/2/24 14:43:57
1楼: 晕,竟然没有人回答,是这个问题太难还是我太笨?:)
----------------------------------------------
秋风清 秋月明,几上闲琴黯生尘。
夜来忽忆少年事,陌上柳绿草青青。
相逢一笑言未语,携手相看自倾心。
二十二载云烟里,云含风韵烟含情。
风尘渺落风霜浸,但闻长空雁长鸣。
姿容如花颜如玉,只在平生梦里寻。
秋风清 秋月明,秋灯秋雨愁煞人。
天涯路远人何在,午夜梦回空扰惊。
作者:
男 lovedelphi1 (梦之铃) ★☆☆☆☆ -
盒子活跃会员
2004/2/24 16:41:52
2楼: 应该是处理WM_HOTKEY消息吧?
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/24 21:33:50
3楼: procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
with Msg do  
  if (Message = WM_KEYDOWN) then
  begin
    showmessage('ok');
    SendMessage(Form1.Handle, Message, wParam, lParam);
  end;
end;
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/24 21:35:40
4楼: 建议用 
const
   WM_SNAPHOTKEY=WM_USER + 101;  //自定义系统热键消息
type
 ....
public
procedure ONHotkey(var message:Tmessage);message WM_HOTKEY;
end;
.....
 
procedure TFrmMain.FormShow(Sender: TObject);
begin
RegisterHotKey(Handle,WM_SNAPHOTKEY,MOD_CONTROL,VK_A );
end;
procedure TFrmMain.FormDestroy(Sender: TObject);
begin
UnregisterHotKey(Handle,WM_SNAPHOTKEY);
end;
 
procedure TFrmMain.ONHotkey(var message:Tmessage);
begin
     if  (message.WParam=WM_SNAPHOTKEY) then
        begin//1
          form2.show;
        end;//1
 
end;

----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 hbqckzj (醉里寻欢) ★☆☆☆☆ -
盒子活跃会员
2004/2/25 13:37:25
5楼: 谢谢两位关注!

关键是俺不想RegisterHotKey函数啊!

因为我想让使用者自定义程序热键,所以就加了一个hotkey控件,用来获得用户的自定义热键。

但是用reg函数有个难点,如果热键是一个键还好解决,如果有辅助键如ALT或SHIFT、CTRL,那我该如何把HOTKEY的辅助键与非辅助键分开?因为REG函数有两个参数,其中一个是辅助键信息,一个是非辅助键的信息,两者一定要分开的。
但是如果是sendmessage函数的话,辅助键与非辅助键就不用分开了,直接取hotkey控件的hotkey值就可以了。

以上,说得比较含糊。希望诸位大侠给予解答!

----------------------------------------------
秋风清 秋月明,几上闲琴黯生尘。
夜来忽忆少年事,陌上柳绿草青青。
相逢一笑言未语,携手相看自倾心。
二十二载云烟里,云含风韵烟含情。
风尘渺落风霜浸,但闻长空雁长鸣。
姿容如花颜如玉,只在平生梦里寻。
秋风清 秋月明,秋灯秋雨愁煞人。
天涯路远人何在,午夜梦回空扰惊。
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行80.07813毫秒 RSS