打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VB模拟鼠标移动与单击
这个代码片断 需要  一个窗体Form~~三个命令按钮CommandButton 四个标签框Label 一个模块
注释:以下代码在Form1中

注释:************[ Functions ]********************************
#If Win32 Then
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
注释:【参数表】
        注释:dwFlags --------  Long,下述标志的一个组合
        注释:MOUSEEVENTF_ABSOLUTE
        注释:dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂
        注释:                        直方向上均匀分割成65535×65535个单元 -  MOUSEEVE
        注释:                        NTF_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函数可取得
        注释:                        这个值。可用的值取决于特定的驱动程序
#End If 注释:WIN32
注释:**********<<[ EOF ]>>***********************************
Dim p1 As POINTAPI, p2 As POINTAPI
Dim x
Dim Y
Dim X1
Dim Y1
Private Const MOUSEEVENTF_MOVE = &H1   
Private Const MOUSEEVENTF_LEFTDOWN = &H2   

Private Const MOUSEEVENTF_LEFTUP = &H4      
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Sub Command1_Click()
MsgBox "no"
End Sub

Private Sub Command2_Click()
MsgBox "yes"
End Sub


Private Sub Command3_Click()
Call MoveCursor(p1, p2) 注释:Mouse由Command1 ->Command2
mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTDOWN, X1, Y1, 0, 0
mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTUP, X1, Y1, 0, 0
End Sub

Private Sub Form_Load()
Dim rect5 As RECT

Call GetWindowRect(Command1.hwnd, rect5) 注释:取得Command1相对於Screen的座标
p1.x = (rect5.Left + rect5.Right) / 2
p1.Y = (rect5.ToP + rect5.Bottom) / 2
Call GetWindowRect(Command2.hwnd, rect5)
p2.x = (rect5.Left + rect5.Right) / 2
p2.Y = (rect5.ToP + rect5.Bottom) / 2
Label1.Caption = p2.x
Label2.Caption = p2.Y
x = Label1.Caption
Y = Label2.Caption
X1 = (65535 / 1024) * x
Y1 = (65535 / 768) * Y
Label3.Caption = X1
Label4.Caption = Y1
End Sub
注释:以下代码在模块里
Type RECT
        Left As Long
        ToP As Long
        Right As Long
        Bottom As Long
End Type
Type POINTAPI
        x As Long
        Y As Long
End Type

Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal Y As Long) As Long
Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Sub MoveCursor(FromP As POINTAPI, ToP As POINTAPI)
Dim stepx As Long, stepy As Long, k As Long
Dim i As Long, j As Long, sDelay As Long
stepx = 1
stepy = 1
i = (ToP.x - FromP.x)
If i < 0 Then stepx = -1
i = (ToP.Y - FromP.Y)
If i < 0 Then stepy = -1
For i = FromP.x To ToP.x Step stepx
    Call SetCursorPos(i, FromP.Y)
    Sleep (1)
Next i
For i = FromP.Y To ToP.Y Step stepy
    Call SetCursorPos(ToP.x, i)
    Sleep (1)
Next i
End Sub
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用mouse_event模拟鼠标事件
VB编外挂的一些基础知识
【clipcursor】最全的API鼠标函数
VB 模拟鼠标点符号击(脚本版)
如​何在vba中用mouse_event操作鼠标?
在vb6.0版本里,有关SendMessage函数和SendKeys按键键值参数列表
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服