精易论坛

标题: 扫码枪获取HOOK 区分是商品码还是付款码或者手动输入 [打印本页]

作者: 广二爷xxoo    时间: 2019-10-18 15:41
标题: 扫码枪获取HOOK 区分是商品码还是付款码或者手动输入
本帖最后由 广二爷xxoo 于 2019-10-18 15:43 编辑

扫码枪测试.e (1.83 MB, 下载次数: 147)
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口  精易模块请自个调用
变量名类 型数组备 注
付款码hHook整数型  
判断1整数型  

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
窗口_总在最前 (取窗口句柄 (), )
付款码hHook = SetWindowsHookExA (13, &付款码钩子, GetModuleHandleA1 (0), 0)
提升进程权限D2 ()
子程序名返回值类型公开备 注
付款码钩子整数型 键盘钩子获取付款码
参数名类 型参考可空数组备 注
nCode整数型
wParam整数型
lParam整数型
变量名类 型静态数组备 注
消息MSG 
i整数型3
键记录文本型 
返回值整数型 
字符数组整数型0
如果真 (nCode = 0)
CopyMemory (消息, lParam, 20)
' 判断输入的是否是数字键+回车键
判断 (文本_寻找文本 ( #数字键值, 到文本 (消息.hwnd), , ) = -1 消息.hwnd = 8 消息.hwnd = 9)
返回 (0)



如果 (消息.wParam = 0)
i [1]取启动时间 ()
返回 (1)



如果 (取启动时间 () - i [1] ≤ 25)
判断 (消息.hwnd = 48)
键记录 = 键记录 + “0”
加入成员 (字符数组, 消息.hwnd)
判断 (消息.hwnd = 49)
键记录 = 键记录 + “1”
加入成员 (字符数组, 消息.hwnd)
判断 (消息.hwnd = 50)
加入成员 (字符数组, 消息.hwnd)
键记录 = 键记录 + “2”
判断 (消息.hwnd = 51)
加入成员 (字符数组, 消息.hwnd)
键记录 = 键记录 + “3”
判断 (消息.hwnd = 52)
加入成员 (字符数组, 消息.hwnd)
键记录 = 键记录 + “4”
判断 (消息.hwnd = 53)
加入成员 (字符数组, 消息.hwnd)
键记录 = 键记录 + “5”
判断 (消息.hwnd = 54)
加入成员 (字符数组, 消息.hwnd)
键记录 = 键记录 + “6”
判断 (消息.hwnd = 55)
加入成员 (字符数组, 消息.hwnd)
键记录 = 键记录 + “7”
判断 (消息.hwnd = 56)
加入成员 (字符数组, 消息.hwnd)
键记录 = 键记录 + “8”
判断 (消息.hwnd = 57)
加入成员 (字符数组, 消息.hwnd)
键记录 = 键记录 + “9”
判断 (消息.hwnd = 13)  ' 回车键后,判断是否是付款码或者商品码
i [2]取文本长度 (键记录)
判断 (i [2] ≤ 19 i [2] ≥ 17)
标签1.标题 = 键记录
清除数组 (字符数组)
键记录 = “”
i [2] = 0
返回值 = 0

判断 (i [2] ≤ 16 i [2] ≥ 5)
UnhookWindowsHookEx (付款码hHook)
' 执行商品编码输入
计次循环首 (取数组成员数 (字符数组), i [3])
按键2 (字符数组 [i [3]], 5, )
计次循环尾 ()
按键2 (13, 5, )
i [3] = 0
键记录 = “”
i [2] = 0
清除数组 (字符数组)
返回值 = 0
付款码hHook = SetWindowsHookExA (13, &付款码钩子, GetModuleHandleA1 (0), 0)









UnhookWindowsHookEx (付款码hHook)
按键2 (消息.hwnd, 5, )
键记录 = “”
清除数组 (字符数组)
返回值 = 0
付款码hHook = SetWindowsHookExA (13, &付款码钩子, GetModuleHandleA1 (0), 0)



返回 (返回值)
子程序名返回值类型公开备 注
__启动窗口_将被销毁  
UnhookWindowsHookEx (付款码hHook)
子程序名返回值类型公开备 注
_时钟1_周期事件  
付款码hHook = SetWindowsHookExA (13, &付款码钩子, GetModuleHandleA1 (0), 0)


作者: 山兔    时间: 2019-10-18 15:43
支持支持支持
作者: wjswzj0    时间: 2019-10-18 16:17
支持开源~!感谢分享

作者: 291367048    时间: 2019-10-18 17:44
hook是一个好东西,你这个hook是直接hookAPI的吗
作者: 深圳梦    时间: 2019-10-18 21:03
支持开源~!感谢分享
作者: 广二爷xxoo    时间: 2019-10-18 22:49
291367048 发表于 2019-10-18 17:44
hook是一个好东西,你这个hook是直接hookAPI的吗

HOOK 键盘的。。
作者: chenwing    时间: 2019-10-19 03:25
谢谢分享!

作者: 丛心世界你不懂    时间: 2019-10-19 23:57
这一套我也写过,写法跟你差不多。有空可以一起交流一下
作者: q951681306    时间: 2019-10-20 00:39
支持开源~!感谢分享
作者: 遍体鳞伤不够美    时间: 2019-10-20 21:54
支持开源!
作者: 广二爷xxoo    时间: 2019-10-21 08:58
丛心世界你不懂 发表于 2019-10-19 23:57
这一套我也写过,写法跟你差不多。有空可以一起交流一下

  好呀
作者: 星耀催催    时间: 2019-10-22 18:04
好东西666666666666666
作者: 德友    时间: 2019-10-23 06:33
厉害了大神好好学习一下
作者: 广二爷xxoo    时间: 2019-10-23 14:15
.版本 2

.子程序 付款码钩子, 整数型, , 键盘钩子获取付款码
.参数 nCode, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.局部变量 消息, MSG
.局部变量 i, 整数型, 静态, "3"
.局部变量 键记录, 文本型, 静态
.局部变量 返回值, 整数型
.局部变量 字符数组, 整数型, 静态, "0"


.如果真 (nCode = 0)
    CopyMemory (消息, lParam, 20)

    ' 判断输入的是否是数字键+回车键   常量文本内容:48,49,50,51,52,53,54,55,56,57,13
    .判断开始 (文本_寻找文本 (#数字键值, 到文本 (消息.hwnd), , ) = -1 或 消息.hwnd = 8 或 消息.hwnd = 9)
        返回 (0)
    .默认

        .如果 (消息.wParam = 0)  ' // 代表按下
            ' //  开始记录时间
            i [1] = 取启动时间 ()  ' i是一个临时整数变量  忽略
            返回 (1)  ' // 1代表放行本条按键按下消息

        .否则

            ' //  这边是消息.wParam ≠ 0   说明是放开按键
            .如果 (取启动时间 () - i [1] ≤ 25)  ' //  放开的时间 - 之前记录的按下时间 = 间隔  小于等于25 就记录在键记录变量上  并拦截本条按键按下消息
                .判断开始 (消息.hwnd = 48)
                    键记录 = 键记录 + “0”
                    加入成员 (字符数组, 消息.hwnd)
                .判断 (消息.hwnd = 49)
                    键记录 = 键记录 + “1”
                    加入成员 (字符数组, 消息.hwnd)
                .判断 (消息.hwnd = 50)
                    加入成员 (字符数组, 消息.hwnd)
                    键记录 = 键记录 + “2”
                .判断 (消息.hwnd = 51)
                    加入成员 (字符数组, 消息.hwnd)
                    键记录 = 键记录 + “3”
                .判断 (消息.hwnd = 52)
                    加入成员 (字符数组, 消息.hwnd)
                    键记录 = 键记录 + “4”
                .判断 (消息.hwnd = 53)
                    加入成员 (字符数组, 消息.hwnd)
                    键记录 = 键记录 + “5”
                .判断 (消息.hwnd = 54)
                    加入成员 (字符数组, 消息.hwnd)
                    键记录 = 键记录 + “6”
                .判断 (消息.hwnd = 55)
                    加入成员 (字符数组, 消息.hwnd)
                    键记录 = 键记录 + “7”
                .判断 (消息.hwnd = 56)
                    加入成员 (字符数组, 消息.hwnd)
                    键记录 = 键记录 + “8”
                .判断 (消息.hwnd = 57)
                    加入成员 (字符数组, 消息.hwnd)
                    键记录 = 键记录 + “9”
                .判断 (消息.hwnd = 13)  ' 如果这边键代码是回车键, 开始判断是否是付款码或者商品码


                    i [2] = 取文本长度 (键记录)  ' // 键记录内容  是记录之前小于25毫秒的数字

                    .判断开始 (i [2] ≤ 19 且 i [2] ≥ 17)  ' //这边代表了应该是付款码
                        标签1.标题 = 键记录  ' // 键记录内容显示标签上
                        清除数组 (字符数组)  ' // 字符数组是键代码数组,之前按顺序记录小于25毫秒的键值
                        键记录 = “”  ' // 清空之前的记录   初始化
                        i [2] = 0  ' // 初始化
                        返回值 = 0  ' // 初始化

                    .判断 (i [2] ≤ 16 且 i [2] ≥ 5)  ' // 这边代表了应该是商品码

                        UnhookWindowsHookEx (付款码hHook)  ' // 卸载掉键盘钩子

                        ' 执行字符数组里的键值输入
                        .计次循环首 (取数组成员数 (字符数组), i [3])
                            按键2 (字符数组 [i [3]], 5, )
                        .计次循环尾 ()

                        按键2 (13, 5, )  ' h回车键

                        ' // 下面都是初始化
                        i [3] = 0
                        键记录 = “”
                        i [2] = 0
                        清除数组 (字符数组)
                        返回值 = 0
                        ' // 重新下钩子
                        付款码hHook = SetWindowsHookExA (13, &付款码钩子, GetModuleHandleA1 (0), 0)

                    .默认

                    .判断结束

                .默认

                .判断结束

            .否则

                ' // 这边代表了是正常输入
                UnhookWindowsHookEx (付款码hHook)  ' 卸载钩子
                按键2 (消息.hwnd, 5, )
                键记录 = “”
                清除数组 (字符数组)
                返回值 = 0
                ' //重新下钩子
                付款码hHook = SetWindowsHookExA (13, &付款码钩子, GetModuleHandleA1 (0), 0)
            .如果结束

        .如果结束

    .判断结束

.如果真结束
返回 (返回值)



作者: 78012342    时间: 2019-10-25 17:20
支持开源~!感谢分享
作者: lei45627    时间: 2019-11-10 01:07
感谢分享 十分需要!
作者: wyd134    时间: 2019-11-15 11:22
没用时钟组件,咋出现时钟事件?
作者: 广二爷xxoo    时间: 2019-11-15 13:06
wyd134 发表于 2019-11-15 11:22
没用时钟组件,咋出现时钟事件?

你可以自己添加一个时钟嘛。。
作者: 少校1688    时间: 2019-11-21 22:29
6666666666
作者: 少校1688    时间: 2019-11-21 22:29

厉害了大神好好学习一下
作者: 71662004    时间: 2019-12-30 23:19
楼主做支付的吗?有个技术问题想咨询一下,可以报价。目前我们只能做到6月份的版本
作者: 广二爷xxoo    时间: 2019-12-31 11:32
71662004 发表于 2019-12-30 23:19
楼主做支付的吗?有个技术问题想咨询一下,可以报价。目前我们只能做到6月份的版本

是的  你的联系方式
作者: 广二爷xxoo    时间: 2019-12-31 11:33
wyd134 发表于 2019-11-15 11:22
没用时钟组件,咋出现时钟事件?

这个自己添加一下 也不需要始终  时钟是一直HOOK  防止其他程序hook 键盘 让程序失效
作者: 71662004    时间: 2020-1-18 18:40
广二爷xxoo 发表于 2019-12-31 11:32
是的  你的联系方式

wx :joly318
作者: zhangwenwu    时间: 2021-2-20 20:33
楼主会做支fu插件吗 能不能加个VX或者QQ聊聊
作者: 点点丶滴滴    时间: 2021-2-21 04:28
支持一下
作者: 龙大创翼    时间: 2021-9-2 06:11
多谢分享,收下了
作者: xmz_2005    时间: 2021-12-10 19:35
谢谢分享
作者: xmz_2005    时间: 2021-12-10 19:44
超级模块9.2没有
作者: xmz_2005    时间: 2021-12-10 19:45
超级模块9.2没有! 不能运行。
作者: Mines    时间: 2022-2-17 11:21
感谢分享!
作者: Mines    时间: 2022-2-17 11:22
感谢分享!
作者: 广二爷xxoo    时间: 2022-2-17 13:57
xmz_2005 发表于 2021-12-10 19:45
超级模块9.2没有! 不能运行。

不用超级模块的
作者: 黑暗学徒    时间: 2022-10-22 19:35
学习学习
作者: xiaoxiao2    时间: 2023-3-24 11:12
感谢分享!
作者: 龍殇    时间: 2024-12-14 08:26
学习一下
作者: opq123    时间: 2025-2-1 14:28
感谢分享,很给力!~
作者: gaopujun    时间: 2025-6-7 12:59
学习一下你好
作者: gaopujun    时间: 2025-6-30 21:05
学习一下




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4