vb 控制鼠标按要求移动。

作者&投稿:之艺 (若有异议请与网页底部的电邮联系)
VB 中如何控制鼠标移动~

例:单击Command1时鼠标会到(500,500)这个点作鼠标左键单击动作。
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) 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_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4

Private Sub Command1_Click()
SetCursorPos 500, 500
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub

关于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:标志位集,指定点击按钮和鼠标动作的多种情况。此参数里的各位可以是下列值的任何合理组合:
MOUSEEVENTF_MOVE &H1,移动鼠标
MOUSEEVENTF_LEFTDOWN &H2,模拟鼠标左键按下
MOUSEEVENTF_LEFTUP &H4,模拟鼠标左键抬起
MOUSEEVENTF_RIGHTDOWN &H8,模拟鼠标右键按下
MOUSEEVENTF_RIGHTUP &H10,模拟鼠标右键抬起
MOUSEEVENTF_MIDDLEDOWN &H20,模拟鼠标中键按下
MOUSEEVENTF_MIDDLEUP &H40,模拟鼠标中键抬起
MOUSEEVENTF_ABSOLUTE &H8000,标示是否采用绝对坐标 )

Option Explicit
'注意,声明时API函数名的大小写不能出任何差错。
Private Declare Function GetCursorPos Lib "user32" ( _
ByVal lpPoint As Long _
) As Long
Private Declare Function SetCursorPos Lib "user32" ( _
ByVal x As Long, _
ByVal y As Long _
) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim P As POINTAPI

'一次移动量。
Const MovVal As Integer = 2

'获取鼠标指针位置。
'用不用VarPtr取决于申明时有没有ByVal
GetCursorPos VarPtr(P)

'移位。
If KeyCode = vbKeyUp Then P.y = P.y - MovVal
If KeyCode = vbKeyDown Then P.y = P.y + MovVal
If KeyCode = vbKeyLeft Then P.x = P.x - MovVal
If KeyCode = vbKeyRight Then P.x = P.x + MovVal

'设置鼠标位置。
SetCursorPos P.x, P.y
End Sub

在屏幕下点击的话可以用鼠标全局键盘钩子。参考代码如下:
首先用建立一个标准Exe程序'把窗体名称,设定为frmMain'在窗体上建立一组文本框数组,名称为txtMsg'txtMsg(0) -- 显示鼠标左键按下的次数'txtMsg(1) -- 显示鼠标中键按下的次数'txtMsg(2) -- 显示鼠标右键按下的次数'txtMsg(3) -- 显示鼠标按下的总次数 '然后建立一个Module,并输入以下代码 Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32"(ByVal hHook As Long) As LongPublic Declare Function CallNextHookEx Lib "user32"(ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, ByVal lpvSource As Long, ByVal cbCopy As Long)Public Type MOUSEMSGS
X As Long 'x座标
Y As Long 'y座标
a As Long
b As Long
time As Long 'Window运行时间
End Type Public Const WH_MOUSE_LL = 14'-----------------------------------------
'消息
Public Const HC_ACTION = 0'鼠标消息
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_MBUTTONDOWN = &H207
Public Const WM_MBUTTONUP = &H208
Public Const WM_MBUTTONDBLCLK = &H209
Public Const WM_MOUSEACTIVATE = &H21
Public Const WM_MOUSEFIRST = &H200
Public Const WM_MOUSELAST = &H209
Public Const WM_MOUSEWHEEL = &H20APublic MouseMsg As MOUSEMSGS
Public lHook As Long '记录Hook的值,以便退出程序的时候销毁Hook
Public lClick As Long, mClick As Long, rClick As Long, tClick As Long '用来统计鼠标各个键的按下次数
'鼠标钩子
Public Function CallMouseHookProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long)As Long If code = HC_ACTION Then
CopyMemory MouseMsg, lParam, LenB(MouseMsg) frmMain.Caption = "X=" + Str(MouseMsg.X) + " Y=" + Str(MouseMsg.Y)'在主窗口上显示鼠标的当前位置 Select Case wParam'根据不同鼠标动作进行处理,在这里只处理了鼠标按下的动作
Case WM_LBUTTONDOWN'左键按下
lClick = lClick + 1 '进行统计,并显示在住窗体的文本框上
tClick = tClick + 1
frmMain.txtMsg(0).Text = lClick
frmMain.txtMsg(3).Text = tClick
CallMouseHookProc = 0'这里把返回值设定为0,保证鼠标动作正常完成
Case WM_MBUTTONDOWN '中键按下
mClick = mClick + 1
tClick = tClick + 1
frmMain.txtMsg(1).Text = mClick
frmMain.txtMsg(3).Text = tClick
CallMouseHookProc = 0
Case WM_RBUTTONDOWN '右键按下
rClick = rClick + 1
tClick = tClick + 1
frmMain.txtMsg(2).Text = rClick
frmMain.txtMsg(3).Text = tClick
CallMouseHookProc = 0
End Select

End IfIf code <> 0 Then
CallMouseHookProc = CallNextHookEx(0, code, wParam, lParam)'使用CallNextHookEx,来保证鼠标钩子能够被其它程序使用
End If

End Function '接下来,我们再给窗体里面添加代码 Private Sub AddHook() '安装鼠标钩子
lHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf CallMouseHookProc, App.hInstance, 0)
End Sub
Private Sub DelHook()'卸除鼠标钩子 UnhookWindowsHookEx lHook
End SubPrivate Sub Form_Load() '窗体载入的时候,安装鼠标钩子
AddHook
End SubPrivate Sub Form_Unload(Cancel As Integer)'窗体卸载的时候,卸除鼠标钩子
DelHook
End Sub

'读取鼠标位置
Dim p As POINTAPI
Call GetCursorPos(p)
MsgBox "当前鼠标位置为:" + vbCrLf + "X坐标:" + LTrim(Str(p.x)) + vbCrLf + "Y坐标:" + LTrim(Str(p.y))

'控制鼠标位置
SetCursorPos X, Y '分别是X坐标和Y坐标
'左键落下
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
'左键抬起
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
'右键落下
mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0
'右键抬起
mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0

要用的API如下……

Public 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)
Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const MOUSEEVENTF_MOVE = &H1 ' mouse move
Public Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down
Public Const MOUSEEVENTF_LEFTUP = &H4 ' left button up
Public Const MOUSEEVENTF_RIGHTDOWN = &H8 ' right button down
Public Const MOUSEEVENTF_RIGHTUP = &H10 ' right button up
Public Type POINTAPI
x As Long
y As Long
End Type下回问之前先查查哦!

这样可以嘛

按照时间间隔分次执行的话可以用TImer控件来控制,你在做QQ视频攻击器??


兴隆台区15363283799: vb按键控制鼠标移动 -
别逄艾普: 开始,控制面板,辅助功能选项,鼠标,选使用使用鼠标键 然后就可以通过数字键盘的2468来控制上下左右了

兴隆台区15363283799: vb如何控制鼠标移动.例如在text1、text2中分别输入x、y坐标.单击按钮然后鼠标指针移动到相应的位置 -
别逄艾普: Option Explicit Private Declare Function SetCursorPos Lib "user32" ( _ ByVal x As Long, _ ByVal y As Long _) As Long Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal ...

兴隆台区15363283799: VB控制鼠标指针移动 -
别逄艾普: 自动下滑,用timer可以实现.松开即可停止,这个不是很清楚.下滑的速度有+-控制,需要热键,网上查一下估计可以实现.给我个邮箱. ---------------------- 针对补充的问题,最小化了之后,所以才使用热键的.热键可以实现的. 用热键控制timer的时间.

兴隆台区15363283799: 用vb编写程序,键盘控制鼠标点击 -
别逄艾普: 用键盘事件接收键盘输入,然后用API SetCursorPos 来移动鼠标到指定坐标 mouse_event 来模拟鼠标单击 声明部分Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long Private Declare Sub mouse...

兴隆台区15363283799: VB中控制鼠标的移动 -
别逄艾普: Option Explicit'注意,声明时API函数名的大小写不能出任何差错.Private Declare Function GetCursorPos Lib "user32" ( _ ByVal lpPoint As Long _) As Long Private Declare Function SetCursorPos Lib "user32" ( _ ByVal x As Long, _ ByVal ...

兴隆台区15363283799: vb怎么能让鼠标移动 -
别逄艾普: vc下有mouse_event vb应该也有 baidu了一下 还真是有 一下非原创 出处 http://zhidao.baidu.com/question/105905243.html Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal ...

兴隆台区15363283799: vb如何实现鼠标单击窗体某个位置对象就移动道那个位置(满意就加分) -
别逄艾普: 在窗体的mouseup事件中设置相应对象的坐标就可以 例如在单击时把picture1移动到单击位置 Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Picture1.Top = Y Picture1.Left = X End Sub

兴隆台区15363283799: VB编程控制鼠标
别逄艾普: 我做过这样的程序 但双击用mouse_event 移动用SetCursorPos 你再自己设置坐标就行了. 不会就追问.

兴隆台区15363283799: 用VB编写鼠标移动+点击事件
别逄艾普: 控制鼠标!!!! 这种情况应该使用API吧 SetCursorPos 好像可以移动光标, 你试试吧! 模拟单击还不知道...

兴隆台区15363283799: vb下实现鼠标控制 -
别逄艾普: 可用 MousePointer 和 MouseIcon 属性显示自定义图标、光标或任意定义过的鼠标指针.鼠标指针的改变可以告知用户诸多信息,例如,正在进行长时间的后台任务,调整某个控件或窗口的大小,某控件不支持拖放操作等等.可用自定义图标或...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网