VB6开发时Listbox中使用模拟mouse event进行右键事件的案例

使用VB6开发时Listbox中使用右键事件的案例

这里的鼠标点击 Mouseclick API函数执行起来感觉有点慢, 感觉会先到cmdGoTo_Click那里, 顺序就乱了
开始的时候我使用Sleep函数, 发现一用系统就当机了, 好像连想延迟的mouse event也没有执行, 郁闷
想了好久才想起了timeGetTime API. 按以下用法解决问题
API真是个好东西

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim daTime As Long
If Button = 2 Then '这里判断是否是右键
mouse_event MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0 '自动点击鼠标左键按下
mouse_event MOUSEEVENTF_LEFTUP, X, Y, 0, 0 '自动点击鼠标左键释放
daTime = timeGetTime
Do While timeGetTime - daTime < 200
DoEvents '释放资源, 来让mouse event 被正常执行
Loop
'MsgBox “clicked”
cmdGoTo_Click
End If
End Sub

顺带把MOUSEEVENT的API列出来供参考
Private Declare Sub mouse_event Lib “user32” Alias “mouse_event” (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

【说明】
模拟一次鼠标事件

【备注】
进行相对运动的时候,由SystemParametersInfo函数规定bai的系统鼠标轨迹速度会应用于鼠标运行的速度

【参数表】
dwFlags -------- Long,下述标志的一个组合
MOUSEEVENTF_ABSOLUTE
dx和dy指定鼠标坐标系统中的一个绝对位置。
在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元 -
MOUSEEVENTF_MOVE
移动鼠标

MOUSEEVENTF_LEFTDOWN模拟鼠标左键按下

MOUSEEVENTF_LEFTUP
模拟鼠标左键抬起

MOUSEEVENTF_RIGHTDOWN
模拟鼠标右键按下

MOUSEEVENTF_RIGHTUP
模拟鼠标右键按下

MOUSEEVENTF_MIDDLEDOWN
模拟鼠标中键按下

MOUSEEVENTF_MIDDLEUP
模拟鼠标中键按下

dx

  • Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相对运动

dy - Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直方向的绝对位置或相对运动

cButtons ------- Long,未使用

dwExtraInfo ---- Long,通常未用的一个值。用GetMessageExtraInfo函数可取得这个值。可用的值取决于特定的驱动程序

以下是timeGetTime的API, 返回系统开机到现在的时间, 单位是毫秒, 存放在一个Long值, ( 有额外示例见资料存放 )
Private Declare Function timeGetTime Lib “winmm.dll” () As Long

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值