在PB中实现热键功能的方法

在PB中实现热键功能的方法  (张 涛)

 

在程序中添加一些热键可以让用户更加快速实现某些功能,对于一些熟练的操作人员,他们更容易接受快捷键。例如大家熟悉的金山词霸,一般情况下她处在系统光标区,用户可以通过Ctrl+Alt+F1组合键来切换是否屏幕取词。那么如何让我们的程序也能实现这个功能呢?下面作者就介绍实现方法:
    1、首先我们必须声明Windows API的外部函数:
          function long SendMessageA(long lhWnd,uint uiMsg,long lwMsg,long lwParam) library 'user32.dll'
    2、接下来,我们必须给一些需要用到的定量赋上初始值。
    Public:
        Constant Long WM_SETHOTKEY = 50 //设置热键消息值
        Constant Long HK_MYHOTKEY = 1648 //热键参数值
        Constant Long SC_HOTKEY = 61776 //PB中的热键消息
    其中,HK_MYHOTKEY不是固定的,它根据用户的需要而定。它的具体值通过如下方法确定的:高8位字节 + 低8位字节组成16为字节,然后将她换算到十进制即得到所需的HK_MYHOTKEY值。高8位字节值为一些辅助键(Control、Alt、Shift等),低8位字节为你想使用的键的ASCII码。例如:A=65..Z=90,Shift=1,Control=2,Alt=4,Extended=8,F1=112..F12=123等,如果我们要使用Ctrl+Alt+A作为热键,则A=65,转换成十六进制为41,Ctrl+Alt=2+4=6,转换成十六进制仍然是6,两则组合即为641,再重新转换回十进制得到1601;同样,如果我们用Ctrl+Alt+F1作为热键,F1=112,可以得到HK_MYHOTKEY值应为1648。
    3、接下来,我们必须利用下面代码告诉窗口我们的热键:
//在窗口的Open事件中
long ll_RC

ll_RC = SendMessageA(Handle(this), WM_SETHOTKEY, HK_MYHOTKEY, 0)
if ll_RC <> 1 then
messagebox("错误","错误信息")
end if
    4、最后,编写当用户按下热键时的处理程序:
//在窗口的Other事件中
IF wparam = SC_HOTKEY THEN
    This.Show()
//在这里编写处理程序
END IF

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值