找回密码
 加入
搜索
查看: 13176|回复: 21

[系统综合] 用字母键加上小键盘的数字键做为快捷键 如a加1

 火.. [复制链接]
发表于 2011-11-19 18:51:08 | 显示全部楼层 |阅读模式
小弟想做一个快速点餐软件,但是遇到小问题,想用快捷键选择,但字母加数字,似乎模拟不出来,只要按字母就运行了。
HotKeySet("{a1}", "Button1");Button1
不知道这样写对不对

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-11-19 19:40:57 | 显示全部楼层
沙发,忘高手解答
发表于 2011-11-19 19:41:46 | 显示全部楼层
这样肯定不行,不符合热键的规则。
LZ应该贴出代码,至少这样才会有人有帮忙的兴趣~
发表于 2011-11-19 19:43:15 | 显示全部楼层
顶A版个,非顶楼主!
发表于 2011-11-19 20:14:02 | 显示全部楼层
不知道这样可以不?
#include <Misc.au3>
$dll = DllOpen("user32.dll")
While 1
    Sleep ( 250 )
    If _IsPressed("41", $dll) Then ;  A key
                HotKeySet("1", "Button1")
     Else
                HotKeySet("1")
    EndIf
WEnd
DllClose($dll)
 楼主| 发表于 2011-11-19 20:15:24 | 显示全部楼层
哦,嘿嘿,发下源码
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=c:\users\administrator\desktop\form1.kxf
$Form1_1 = GUICreate("窗口", 1124, 868, -1, -1)
$Pic1 = GUICtrlCreatePic("快餐软件背景.jpg", 0, 0, 1124, 868);底图
GUICtrlSetState ( $Pic1 , $GUI_DISABLE );禁用控件


HotKeySet("{a}{1}", "button1")


$Button1 = GUICtrlCreateButton("1", 48, 40, 300, 50)
GUICtrlSetFont (-1, 15 , "" ,"" ,"微软雅黑")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

                Case $Button1
                        MsgBox(0,"","您选择了第一个")
       
        EndSwitch
WEnd

Func Button1()
        MsgBox(0,"","您选择了第一个")
EndFunc   ;==>Button1
 楼主| 发表于 2011-11-19 20:25:44 | 显示全部楼层
xiehuahere  他这个源码是可以的
发表于 2011-11-19 20:35:05 | 显示全部楼层
不行,我按了a键,就已经跳出msgbox了
发表于 2011-11-19 20:41:05 | 显示全部楼层
热键的话好像都是功能键加单个字母或数字的,你这样字母和数字的组合,好像不容易搞啊!
发表于 2011-11-19 23:06:21 | 显示全部楼层
用api callprochook可能可以,参考下blockex里的做法
发表于 2011-11-19 23:34:41 | 显示全部楼层
回复 1# 白隼

原理:
_WinAPI_RegisterHotKey注册相关的字母和小键盘数字热键(即使窗口没激活依然能执行)
两个变量分别储存字母和数字,其中数字为字符可累加
注册空格键为取消下单,回车为下单
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPIEx.au3>
Global Const $WM_HOTKEY = 0x0312
Global $hWnd
$Num = ''
$hWnd = GUICreate("快速下单例子-by lynfr8", 633, 452, 290, 150)
GUIRegisterMsg($WM_HOTKEY, 'WM_HOTKEY')
$Label1 = GUICtrlCreateLabel("字母", 24, 384, 100, 57)
$Label2 = GUICtrlCreateLabel("数字", 152, 384, 148, 73)
$Group1 = GUICtrlCreateGroup("菜单", 8, 8, 609, 361)
$Label3 = GUICtrlCreateLabel("使用方法:1.空格消除   2.回车下单", 48, 56, 380, 201)
GUICtrlCreateGroup("", -99, -99, 1, 1)
_WinAPI_RegisterHotKey($hWnd, 0x0160, 0, 0x60);0
_WinAPI_RegisterHotKey($hWnd, 0x0161, 0, 0x61);1
_WinAPI_RegisterHotKey($hWnd, 0x0162, 0, 0x62);2
_WinAPI_RegisterHotKey($hWnd, 0x0163, 0, 0x63);3
_WinAPI_RegisterHotKey($hWnd, 0x0164, 0, 0x64);4
_WinAPI_RegisterHotKey($hWnd, 0x0165, 0, 0x65);5
_WinAPI_RegisterHotKey($hWnd, 0x0166, 0, 0x66);6
_WinAPI_RegisterHotKey($hWnd, 0x0167, 0, 0x67);7
_WinAPI_RegisterHotKey($hWnd, 0x0168, 0, 0x68);8
_WinAPI_RegisterHotKey($hWnd, 0x0169, 0, 0x69);9
_WinAPI_RegisterHotKey($hWnd, 0x0141, 0, 0x41);A
_WinAPI_RegisterHotKey($hWnd, 0x0142, 0, 0x42);B
_WinAPI_RegisterHotKey($hWnd, 0x0143, 0, 0x43);C
_WinAPI_RegisterHotKey($hWnd, 0x0144, 0, 0x44);D
_WinAPI_RegisterHotKey($hWnd, 0x0145, 0, 0x45);E
_WinAPI_RegisterHotKey($hWnd, 0x0151, 0, 0x51);Q
_WinAPI_RegisterHotKey($hWnd, 0x0152, 0, 0x52);R
_WinAPI_RegisterHotKey($hWnd, 0x0157, 0, 0x57);W
_WinAPI_RegisterHotKey($hWnd, 0x0158, 0, 0x58);X
_WinAPI_RegisterHotKey($hWnd, 0x015A, 0, 0x5A);Z
_WinAPI_RegisterHotKey($hWnd, 0x0120, 0, 0x20);空格
_WinAPI_RegisterHotKey($hWnd, 0x010D, 0, 0x0D);回车
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd

Func WM_HOTKEY($hWnd, $iMsg, $wParam, $lParam)
        Switch _WinAPI_HiWord($lParam)
                Case 0x60
                        $Num = $Num & '0'
                        GUICtrlSetData($Label2, $Num)
                Case 0x61
                        $Num = $Num & '1'
                        GUICtrlSetData($Label2, $Num)
                Case 0x62
                        $Num = $Num & '2'
                        GUICtrlSetData($Label2, $Num)
                Case 0x63
                        $Num = $Num & '3'
                        GUICtrlSetData($Label2, $Num)
                Case 0x64
                        $Num = $Num & '4'
                        GUICtrlSetData($Label2, $Num)
                Case 0x65
                        $Num = $Num & '5'
                        GUICtrlSetData($Label2, $Num)
                Case 0x66
                        $Num = $Num & '6'
                        GUICtrlSetData($Label2, $Num)
                Case 0x67
                        $Num = $Num & '7'
                        GUICtrlSetData($Label2, $Num)
                Case 0x68
                        $Num = $Num & '8'
                        GUICtrlSetData($Label2, $Num)
                Case 0x69
                        $Num = $Num & '9'
                        GUICtrlSetData($Label2, $Num)
                Case 0x41
                        GUICtrlSetData($Label1, 'A')
                Case 0x42
                        GUICtrlSetData($Label1, 'B')
                Case 0x43
                        GUICtrlSetData($Label1, 'C')
                Case 0x44
                        GUICtrlSetData($Label1, 'D')
                Case 0x45
                        GUICtrlSetData($Label1, 'E')
                Case 0x51
                        GUICtrlSetData($Label1, 'Q')
                Case 0x52
                        GUICtrlSetData($Label1, 'R')
                Case 0x57
                        GUICtrlSetData($Label1, 'W')
                Case 0x58
                        GUICtrlSetData($Label1, 'X')
                Case 0x5A
                        GUICtrlSetData($Label1, 'Z')
                Case 0x20
                        GUICtrlSetData($Label2, '')
                        GUICtrlSetData($Label1, '')
                        $Num = ''
                Case 0x0D
                        If GUICtrlRead($Label1) <> '' And GUICtrlRead($Label2) <> '' Then GUICtrlSetData($Label3, '你的下单为:'&GUICtrlRead($Label1) & GUICtrlRead($Label2))
                        ;判断GUICtrlRead($Label1) & GUICtrlRead($Label2)即可执行相应的下单
                        $Num = ''
        EndSwitch
EndFunc   ;==>WM_HOTKEY
拓展(键盘对应码):
01 Left mouse button
02 Right mouse button
04 Middle mouse button (three-button mouse)
05 Windows 2000/XP: X1 mouse button
06 Windows 2000/XP: X2 mouse button
08 BACKSPACE key
09 TAB key
0C CLEAR key
0D ENTER key
10 SHIFT key
11 CTRL key
12 ALT key
13 PAUSE key
14 CAPS LOCK key
1B ESC key
20 SPACEBAR
21 PAGE UP key
22 PAGE DOWN key
23 END key
24 HOME key
25 LEFT ARROW key
26 UP ARROW key
27 RIGHT ARROW key
28 DOWN ARROW key
29 SELECT key
2A PRINT key
2B EXECUTE key
2C PRINT SCREEN key
2D INS key
2E DEL key
30 0 key
31 1 key
32 2 key
33 3 key
34 4 key
35 5 key
36 6 key
37 7 key
38 8 key
39 9 key
41 A key
42 B key
43 C key
44 D key
45 E key
46 F key
47 G key
48 H key
49 I key
4A J key
4B K key
4C L key
4D M key
4E N key
4F O key
50 P key
51 Q key
52 R key
53 S key
54 T key
55 U key
56 V key
57 W key
58 X key
59 Y key
5A Z key
5B Left Windows key
5C Right Windows key
60 Numeric keypad 0 key
61 Numeric keypad 1 key
62 Numeric keypad 2 key
63 Numeric keypad 3 key
64 Numeric keypad 4 key
65 Numeric keypad 5 key
66 Numeric keypad 6 key
67 Numeric keypad 7 key
68 Numeric keypad 8 key
69 Numeric keypad 9 key
6A Multiply key
6B Add key
6C Separator key
6D Subtract key
6E Decimal key
6F Divide key
70 F1 key
71 F2 key
72 F3 key
73 F4 key
74 F5 key
75 F6 key
76 F7 key
77 F8 key
78 F9 key
79 F10 key
7A F11 key
7B F12 key
7C-7F F13 key - F16 key
80H-87H F17 key - F24 key
90 NUM LOCK key
91 SCROLL LOCK key
A0 Left SHIFT key
A1 Right SHIFT key
A2 Left CONTROL key
A3 Right CONTROL key
A4 Left MENU key
A5 Right MENU key
BA ;
BB =
BC ,
BD -
BE .
BF /
C0 `
DB [
DC \
DD ]
功能加强:
1.可以监控字母和数字的变化即时搜索菜单数据并显示符合的图文数据
2.加键盘声音,类似手机的键盘音
发表于 2011-11-20 09:24:07 | 显示全部楼层
楼主的这个不错.很好.学习了ING
发表于 2011-11-20 14:03:35 | 显示全部楼层
不是很懂看看在说吧
发表于 2011-11-20 17:30:22 | 显示全部楼层
学习了,楼上几位很强大!...
发表于 2011-11-21 16:08:34 | 显示全部楼层
不错的代码,学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-18 14:00 , Processed in 0.086464 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表