Foxtable(狐表)用户栏目专家坐堂 → 关于钩子无法键盘监控


  共有3391人关注过本帖树形打印复制链接

主题:关于钩子无法键盘监控

帅哥,在线噢!
zto001
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
关于钩子无法键盘监控  发帖心情 Post By:2022/4/8 15:26:00 [只看该作者]

求助钩子实例键盘监控

我用来监控扫描枪扫描内容。每次扫个6-8个单号左右的样子之后就不能在监控了,重新启动钩子也没用,需要关掉重开才行,这是怎么回事?

 回到顶部
帅哥,在线噢!
zto001
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2022/4/8 15:30:00 [只看该作者]

改了代码自定义函数代码 hook_KeyDown 其余没变


'''

Dim sender = args(0)
Dim e = args(1)
Forms("扫描监控").Controls("Label1").Text = "键盘按下, " & e.KeyData.ToString() & " 键码:" & Convert.ToString(e.KeyValue)
Output.Show(e.KeyData.ToString())
Select Case  e.KeyData.ToString().Length
    Case 1
        Vars("按键暂存")  =Vars("按键暂存") &  e.KeyData.ToString()
    Case 2
        If e.KeyData.ToString().Contains("D")
            Vars("按键暂存") =Vars("按键暂存") &  e.KeyData.ToString().Replace("D","")
        End If
End Select
Select Case  e.KeyData.ToString()
    Case "Return"
        Output.Show(Vars("按键暂存"))
        Select Case Forms("扫描监控").Controls("选择录入项").value
            Case "收费扫描"
                Forms("收费扫描").Controls("TextBox4").value=Vars("按键暂存").Replace("开始","").Replace("Capital","")
                Forms("扫描监控").Controls("当前单号").value=Vars("按键暂存").Replace("开始","").Replace("Capital","")
                Forms("扫描监控").Controls("全部单号").value=Vars("按键暂存").Replace("开始","").Replace("Capital","") & vbcrlf & Forms("扫描监控").Controls("全部单号").value
                Forms("收费扫描").Controls("监控提交").PerformClick()
                
                'Sendkeys.Send(Vars("按键暂存").Replace("开始","").Replace("Capital","") & " {ENTER}")
            Case "专用扫描"
                Forms("专用扫描").Controls("TextBox4").value=Vars("按键暂存").Replace("开始","").Replace("Capital","")
                Forms("扫描监控").Controls("当前单号").value=Vars("按键暂存").Replace("开始","").Replace("Capital","")
                Forms("扫描监控").Controls("全部单号").value=Vars("按键暂存").Replace("开始","").Replace("Capital","") & vbcrlf & Forms("扫描监控").Controls("全部单号").value
                Forms("专用扫描").Controls("监控提交").PerformClick()
                
                Output.Show("ceshi chengg")
                
                'Sendkeys.Send(Vars("按键暂存").Replace("开始","").Replace("Capital","") & " {ENTER}")
                
            Case "退件扫描"
                Forms("主页面").Controls("TextBox4").value=Vars("按键暂存").Replace("开始","").Replace("Capital","")
                Forms("扫描监控").Controls("当前单号").value=Vars("按键暂存").Replace("开始","").Replace("Capital","")
                Forms("扫描监控").Controls("全部单号").value=Vars("按键暂存").Replace("开始","").Replace("Capital","") & vbcrlf & Forms("扫描监控").Controls("全部单号").value
                Forms("主页面").Controls("监控提交").PerformClick()
                
                '                Sendkeys.Send(Vars("按键暂存").Replace("开始","").Replace("Capital","") & " {ENTER}")
            Case Else
                
        End Select
        
        Vars("按键暂存")="开始"
        
        'Dim 新 As Row=Tables("扫描监控_Table1").AddNew()
        'Output.Show(Vars("按键暂存").Replace("开始","").Replace("Capital","") )
        'Dim dr As DataRow = DataTables("扫描监控_Table2").Find("寄件人姓名= '" & Vars("按键暂存").Replace("开始","").Replace("Capital","") & "'") '找出编号为03的产品
        'If dr IsNot Nothing Then '如果找到的话
        'Output.Show("是")
        '新("运单编号")=dr("运单号")
        'Else
        '新("运单编号")=Vars("按键暂存").Replace("开始","").Replace("Capital","")
        'Output.Show("否")
        'End If
        '新("备注信息")=Vars("按键暂存")
        '新("操作时间")=Date.Now
        '新("操作人")= Forms("扫描监控").Controls("操作人").text.Replace("当前操作人:","")
        '新("操作类型")="扫码监控"
        '新("货主ID")=_货主ID
        'Vars("按键暂存")="开始"
        ''Functions.AsyncExecute("监控保存行",新)
        
        'Case Else
        '
        'Select Case  e.KeyData.ToString().Length
        'Case 2,7
        '
        'Vars("按键暂存") = Vars("按键暂存") &  e.KeyData.ToString().Chars( e.KeyData.ToString().Length-1)
        ''Replace("D","")
        'Case Else
        'Vars("按键暂存") = Vars("按键暂存") &  e.KeyData.ToString()
        'End Select
        '
        'If  Vars("按键暂存").Length>250 Then
        'Dim 新 As Row=Tables("扫描监控_Table1").AddNew()
        '
        'Dim dr As DataRow = DataTables("扫描监控_Table2").Find("寄件人姓名= '" & Vars("按键暂存").Replace("开始","").Replace("Capital","") & "'") '找出编号为03的产品
        'If dr IsNot Nothing Then '如果找到的话
        'Output.Show("是")
        '新("运单编号")=dr("运单号")
        'Else
        '新("运单编号")=Vars("按键暂存").Replace("开始","").Replace("Capital","")
        'Output.Show("否")
        'End If
        '新("备注信息")=Vars("按键暂存")
        '新("操作时间")=Date.Now
        '新("操作人")= Forms("扫描监控").Controls("操作人").text.Replace("当前操作人:","")
        '新("操作类型")="扫码监控"
        '新("货主ID")=_货主ID
        'Vars("按键暂存")="开始"
        'Functions.AsyncExecute("监控保存行",新)
        '
        'End If
End Select

 回到顶部
帅哥,在线噢!
zto001
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2022/4/8 15:30:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:扫描监控.zip
这个是窗口
[此贴子已经被作者于2022/4/8 15:31:57编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/8 15:43:00 [只看该作者]

测试不了,仅看代码看不出什么

 回到顶部
帅哥,在线噢!
zto001
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2022/4/8 16:10:00 [只看该作者]

 下载信息  [文件大小:20.7 KB  下载次数:232]
图片点击可在新窗口打开查看点击浏览该文件:钩子示例.zip
那你直接用这个钩子实例,他也一样的。应该不是我的项目问题。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/8 16:45:00 [只看该作者]

搞不懂是什么问题。百度看了一下,似乎是钩子是32位的,如果打开了任何64位的程序界面使用钩子,钩子就会被阻塞无法响应

 回到顶部
帅哥,在线噢!
zto001
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1489 积分:10602 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2022/4/9 9:31:00 [只看该作者]

好像32位的电脑也有类似的问题,不过能比64位的多坚持一下


 回到顶部