如何用vb实现自动点击?

smilejiangjun 2000-11-18 08:31:00
请问各位高手,小弟初学vb ,想知道能不能用vb实现鼠标自动点击按钮?多谢了
...全文
943 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
echofang 2000-11-18
  • 打赏
  • 举报
回复
比较傻的方法是Sendkey
高明一点的方法是向按钮发送鼠标消息
好象是WM_MOUSECLICK
iProgram 2000-11-18
  • 打赏
  • 举报
回复
mouse_event API
NiceFeather 2000-11-18
  • 打赏
  • 举报
回复
实现自动点击的方法有很多,如上面有人提到的sendkey、mouse_event,还有sendmessage等!
iProgram 2000-11-18
  • 打赏
  • 举报
回复
下边的代码演示了模拟鼠标移动和单击,遗憾的是不能单击程序外的窗口。
请先声明以下API:mouse_event、GetCursorPos、SetCursorPos、ClientToScreen 还有POINTAPI Type,别忘了加上用到的常量。
向Form1添加加Command1和Command2。
代码如下:
Private Sub Command1_Click()
  MsgBox "A Test"
End Sub
Private Sub Command2_Click()
  Dim ButtonPos As POINTAPI
  '窗口客户区坐标系与屏幕坐标系坐标原点不同,坐标单位(scale)也不同
  'With里的代码把按钮Command1的中心在窗口客户区中的坐标单位转换为屏幕坐标系的单位
  With Command1
    ButtonPos.x = (.Left + .Width / 2) / Screen.TwipsPerPixelX
    ButtonPos.y = (.Top + .Height / 2) / Screen.TwipsPerPixelY
  End With
  '还要通过函数ClientToScreen进行坐标平移变换,取得按钮中心在屏幕坐标系中的坐标位置
  ClientToScreen hwnd, ButtonPos
  '下边代码可以产生动态效果
  Dim CursorPos As POINTAPI
  Dim DistX As Double, DistY As Double
  Dim Counter As Long, PosX As Long, PosY As Long
  'GetCursorPos函数把鼠标光标的当前位置存到CursorPos中
  GetCursorPos CursorPos
  DistX = ButtonPos.x - CursorPos.x
  DistY = ButtonPos.y - CursorPos.y
  'CursorStep决定了鼠标移动的步长
  Dim CursorStep As Long
  CursorStep = 500
  For Counter = 1 To CursorStep
    PosX = CursorPos.x + DistX * Counter / CursorStep
    PosY = CursorPos.y + DistY * Counter / CursorStep
    '再用SetCursorPos函数设定了鼠标光标在屏幕上的位置
    SetCursorPos PosX, PosY
  Next Counter
  '然后就可以单击了
  mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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