VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 356|回复: 9

[求助] 如何判断鼠标已经双击了呢?

[复制链接]
发表于 2018-1-2 19:39:16 | 显示全部楼层 |阅读模式
  1. Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
  2. Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  3. sub a()
  4.     If GetAsyncKeyState(1) = -32767 Then
  5.     Sleep 250
  6.     If GetAsyncKeyState(1) = -32767 Then
  7.     MsgBox "已经双击", 4096
  8.     End If
  9.     End If
  10. end sub
复制代码

上面代码表示单击后过半秒后再次单击则提示双击。但不是完美的,如果两次单击间隔时间不是半秒,很可能不成功。
请问:如何实现双击呢?
发表于 2018-1-9 16:50:19 | 显示全部楼层
用VB读取注册表里的系统双击速度值来用,单位 mS

Private Sub Command1_Click()
    Dim w As Object
    On Error GoTo err
    Set w = CreateObject("wscript.shell")
    Text1.Text = w.regread("HKEY_CURRENT_USER\Control Panel\Mouse\DoubleClickSpeed")
    Exit Sub
err:
    err.Clear
    MsgBox "找不到这个值"
    Exit Sub
End Sub

评分

参与人数 1人气 +1 收起 理由
bruly + 1 太给力了,非常感谢~

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2018-1-8 08:21:54 | 显示全部楼层
鼠标双击的间隔由win系统设置确定的

评分

参与人数 1威望 +2 人气 +1 收起 理由
bruly + 2 + 1 感谢热心帮助,不知系统如何设置的,可以找.

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2018-1-8 09:25:11 | 显示全部楼层
一直按着鼠标会被认为双击了么?

评分

参与人数 1威望 +2 人气 +1 收起 理由
bruly + 2 + 1 感谢关注,祝您工作顺利~!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2018-1-9 08:07:46 | 显示全部楼层
控制面板-鼠标-双击速度
回复 支持 反对

使用道具 举报

发表于 2018-1-9 08:08:09 | 显示全部楼层
控制面板-鼠标-双击速度
回复 支持 反对

使用道具 举报

发表于 2018-1-9 08:08:42 | 显示全部楼层
控制面板-鼠标-双击速度

评分

参与人数 1人气 +1 收起 理由
bruly + 1 很给力

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2018-1-11 13:49:34 | 显示全部楼层
阻塞法不太好,会经常漏吧?
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
我觉得正确的做法应该是拦截系统消息,子类化,直接获得双击消息
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层
l楼上说的是对的 subclass 自己百度搜搜
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2018-1-22 18:21

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表