关闭

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

946人阅读 评论(0) 收藏 举报

在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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:47582次
    • 积分:769
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:47篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论