vba模拟鼠标点击问题

许宏洲 2022-05-24 08:23:02

做了一个vba模拟鼠标点击的宏,功能是点击wps上的菜单实现相就的功能,发现wps vba的运行机制是先把宏运行完,再让显示菜单,不知道有没有办法让wps在宏点击运行时,实时出现需要的菜单?

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


'鼠标移动和点击模块
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)
Private Const MOUSEEVENTF_ABSOLUTE = &H8000    '指定鼠标使用绝对坐标系,此时,屏幕在水平和垂直方向上均匀分割成65535×65535个单元
Private Const MOUSEEVENTF_MOVE = &H1    '移动鼠标
Private Const MOUSEEVENTF_LEFTDOWN = &H2    '模拟鼠标左键按下
Private Const MOUSEEVENTF_LEFTUP = &H4    '模拟鼠标左键抬起
Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Declare Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long    '获取分辨率
Type POINTAPI
    x As Long
    y As Long
End Type


Private Sub Screen_Click(ByVal x As Long, ByVal y As Long)    '移动并点击
    mw = x / GetSystemMetrics32(0) * 65535
    mh = y / GetSystemMetrics32(1) * 65535
    mouse_event MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_MOVE, mw, mh, 0, 0
    mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub

Public Function getmouse_x_y() As POINTAPI    '坐标
    GetCursorPos getmouse_x_y

End Function
Sub DisplayMonitorInfo()
    Dim x As Long, y As Long
    x = GetSystemMetrics32(0)    ' 宽度(像素)
    y = GetSystemMetrics32(1)    ' 高度(像素)
    MsgBox "屏幕分辨率为:" & x & " × " & y & " 像素"
End Sub
Sub GetPosition()    '获得坐标
    Debug.Print getmouse_x_y.x, getmouse_x_y.y

End Sub
Sub test()
    SetCursorPos 850, 130
    mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
    
    Sleep 500
    SetCursorPos 620, 265
    mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
    
    Sleep 500
    SetCursorPos 1050, 385
    Sleep 500
    mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
    
    'Screen_Click [D 2], [D3]
End Sub

 

...全文
1120 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-IT工具 发布问题, 以便更快地解决您的疑问

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧