如何自定义热键?

wanggjvc 2006-03-31 10:33:57
本人开发pos系统,要实现前台自定义热键。
操作就像qq的热键设置那样,按住某个键或者组合键,设置某项功能的热键。
信息可以保存在配置文件或者数据库内。
那位高手实现过。
...全文
151 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanggjvc 2006-03-31
  • 打赏
  • 举报
回复
请问组合键怎么搞?
wanggjvc 2006-03-31
  • 打赏
  • 举报
回复
Dec Hex Char Code
0 00 € NUL
1 01 € SOH
2 02 € STX
3 03 € ETX
4 04 € EOT
5 05 € ENQ
6 06 € ACK
7 07 € BEL
8 08 € BS
9 09 € HT
10 0A € LF
11 0B € VT
12 0C € FF
13 0D € CR
14 0E € SO
15 0F € SI
16 10 € SLE
17 11 € CS1
18 12 € DC2
19 13 € DC3
20 14 € DC4
21 15 € NAK
22 16 € SYN
23 17 € ETB
24 18 € CAN
25 19 € EM
26 1A € SIB
27 1B € ESC
28 1C € FS
29 1D € GS
30 1E RS
31 1F € US
32 20 (space)
33 21 !
34 22 "
35 23 #
36 24 $
37 25 %
38 26 &
39 27 '
40 28 (
41 29 )
42 2A *
43 2B +
44 2C ,
45 2D -
46 2E .
47 2F /
48 30 0
49 31 1
50 32 2
51 33 3
52 34 4
53 35 5
54 36 6
55 37 7
56 38 8
57 39 9
58 3A :
59 3B ;
60 3C <
61 3D =
62 3E >
63 3F ?
64 40 @
65 41 A
66 42 B
67 43 C
68 44 D
69 45 E
70 46 F
71 47 G
72 48 H
73 49 I
74 4A J
75 4B K
76 4C L
77 4D M
78 4E N
79 4F O
80 50 P
81 51 Q
82 52 R
83 53 S
84 54 T
85 55 U
86 56 V
87 57 W
88 58 X
89 59 Y
90 5A Z
91 5B [
92 5C \
93 5D ]
94 5E ^
95 5F _
96 60 `
97 61 a
98 62 b
99 63 c
100 64 d
101 65 e
102 66 f
103 67 g
104 68 h
105 69 i
106 6A j
107 6B k
108 6C l
109 6D m
110 6E n
111 6F o
112 70 p
113 72 q
114 72 r
115 73 s
116 74 t
117 75 u
118 76 v
119 77 w
120 78 x
121 79 y
122 7A z
123 7B {
124 7C |
125 7D }

这个就是键值的id吗?
wanggjvc 2006-03-31
  • 打赏
  • 举报
回复
做一个这个要慢慢搞哦,是否有高手做好的用户对象呢
lzheng2001 2006-03-31
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=196668
wanggjvc 2006-03-31
  • 打赏
  • 举报
回复
那这些实例变量就要在配置文件里写入。然后调用就好啦?
lzheng2001 2006-03-31
  • 打赏
  • 举报
回复
设置实例常量如下:
CONSTANT INT HK_ID_1 = 101
CONSTANT LONG WM_HOTKEY = 786
CONSTANT UINT VK_F10 = 121

设置外部函数声明如下:
Function long RegisterHotKey(long hwnd,long id,ulong flags,ulong keycode) library 'user32.dll'
Function long UnregisterHotKey(long hwnd,long id) library 'user32.dll'

在这个数据窗口所在的窗口的OPEN事件中写
RegisterHotKey(Handle(THIS),HK_ID_1,0,VK_F10)

CLOSE事件中写
UnregisterHotKey(Handle(THIS),HK_ID_1)

在OTHER事件中写
IF Message.Number = 786 THEN
IF wparam = HK_ID_1 THEN
//你要进行处理的代码
END IF
END IF


试试看,我在我这里实验是能够成功的

---------------------------------------------------------------

在OTHER事件中的
IF Message.Number = 786 THEN
这句
等同于
IF Message.Number = WM_HOTKEY THEN

我一时心急,没有用常量名替代

---------------------------------------------------------------

数据窗口新建用户事件,id为:pbm_dwnkey
里面如:
if key = KeyF10! then
cb_save.event clicked()
end if

这样就可以了,我就是这样实现的,运行得蛮好的,如果要求组合键,
加代码:
if keyflags = {0,1,2} then
if key = KeyF10! then
cb_save.event clicked()
end if
end if

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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