VB 中如何控制鼠标移动
PrivateDeclareSubmouse_eventLib"user32"(ByValdwFlagsAsLong,ByValdxAsLong,ByValdyAsLon...
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_MOVE = &H1 'Mouse move
Private Sub Command1_Click()
Call mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, 200, 0, 0&, 0&)
End Sub
以上代码应该就是把鼠标向右平移了一下距离。但是想改进一些:
1。代码是“把鼠标在屏幕上的位置平移XX个单位”,但是想得到的效果是“把鼠标在Form窗口里的位置平移XX”,怎么改?
2。代码是“平移XX个单位”,但是想得到的效果是“平移到XX坐标”,怎么个改呢?
谢谢大师指点。。。 展开
Private Const MOUSEEVENTF_MOVE = &H1 'Mouse move
Private Sub Command1_Click()
Call mouse_event(MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, 200, 0, 0&, 0&)
End Sub
以上代码应该就是把鼠标向右平移了一下距离。但是想改进一些:
1。代码是“把鼠标在屏幕上的位置平移XX个单位”,但是想得到的效果是“把鼠标在Form窗口里的位置平移XX”,怎么改?
2。代码是“平移XX个单位”,但是想得到的效果是“平移到XX坐标”,怎么个改呢?
谢谢大师指点。。。 展开
4个回答
展开全部
例:单击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,标示是否采用绝对坐标 )
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,标示是否采用绝对坐标 )
展开全部
我怎么感觉,LS两位有点答非所问。呵呵、你想只是改变窗体中的位置不是屏幕上的位置的话。
一:你在X,Y坐标是分别加上 me.width 和me.height 加上窗体的横坐标和纵坐标不就是吧鼠标移动到窗体的指定位置了么。
二:VB默认单位为缇,普通的分辨率一般叫像素,1像素=15缇
所以窗体的长度换算成像素的话应该是me.width/15,自己测试下。。这样就可以实现VB的单位转为屏幕像素单位了。
一:你在X,Y坐标是分别加上 me.width 和me.height 加上窗体的横坐标和纵坐标不就是吧鼠标移动到窗体的指定位置了么。
二:VB默认单位为缇,普通的分辨率一般叫像素,1像素=15缇
所以窗体的长度换算成像素的话应该是me.width/15,自己测试下。。这样就可以实现VB的单位转为屏幕像素单位了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用两个API函数,SetCurPos 和GetCurPos ,用这两个API需要声明一个PointApi数据类型,用VB企业版的的API浏览器可以查到函数和数据类型的声明。
移动鼠标可以用 SetCurPos ()这个函数(以坐标的形式更改鼠标的位置),获取鼠标当前位置可以用GetCurPos()
移动鼠标可以用 SetCurPos ()这个函数(以坐标的形式更改鼠标的位置),获取鼠标当前位置可以用GetCurPos()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果用clswindow框架的话就简单了。代码如下:
Dim w As New clsWindow
w.Hwnd = Me.Hwnd
w.SetCursor w.Left + 200, 0
也可以写成下面这样,更简便:
Dim w As New clsWindow
w.GetWindowByHwnd(Me.Hwnd).SetCursor 200, 0, relative
Dim w As New clsWindow
w.Hwnd = Me.Hwnd
w.SetCursor w.Left + 200, 0
也可以写成下面这样,更简便:
Dim w As New clsWindow
w.GetWindowByHwnd(Me.Hwnd).SetCursor 200, 0, relative
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询