VB 中如何控制鼠标移动

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坐标”,怎么个改呢?

谢谢大师指点。。。

例:单击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,标示是否采用绝对坐标 )
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-15
我怎么感觉,LS两位有点答非所问。呵呵、你想只是改变窗体中的位置不是屏幕上的位置的话。

一:你在X,Y坐标是分别加上 me.width 和me.height 加上窗体的横坐标和纵坐标不就是吧鼠标移动到窗体的指定位置了么。

二:VB默认单位为缇,普通的分辨率一般叫像素,1像素=15缇
所以窗体的长度换算成像素的话应该是me.width/15,自己测试下。。这样就可以实现VB的单位转为屏幕像素单位了。
第2个回答  2012-02-15
用两个API函数,SetCurPos 和GetCurPos ,用这两个API需要声明一个PointApi数据类型,用VB企业版的的API浏览器可以查到函数和数据类型的声明。
移动鼠标可以用 SetCurPos ()这个函数(以坐标的形式更改鼠标的位置),获取鼠标当前位置可以用GetCurPos()
第3个回答  2020-02-28
如果用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

VB 中如何控制鼠标移动
MOUSEEVENTF_MOVE &H1,移动鼠标 MOUSEEVENTF_LEFTDOWN &H2,模拟鼠标左键按下 MOUSEEVENTF_LEFTUP &H4,模拟鼠标左键抬起 MOUSEEVENTF_RIGHTDOWN &H8,模拟鼠标右键按下 MOUSEEVENTF_RIGHTUP &H10,模拟鼠标右键抬起 MOUSEEVENTF_MIDDLEDOWN &H20,模拟鼠标中键按下 MOUSEEVENTF_MIDDLEUP &H40,模拟鼠标中键...

VB怎么实现鼠标移动过去执行一个命令按下去又执行另一命令?
Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Debug.Print "这是鼠标移动过去执行的命令。注意,在鼠标移动过程中这个命令会执行多次,如果只希望运行一次,可以加个静态的布尔变量进行控制"End Sub ...

vb 控制鼠标按要求移动。
在屏幕下点击的话可以用鼠标全局键盘钩子。参考代码如下:首先用建立一个标准Exe程序'把窗体名称,设定为frmMain'在窗体上建立一组文本框数组,名称为txtMsg'txtMsg(0) -- 显示鼠标左键按下的次数'txtMsg(1) -- 显示鼠标中键按下的次数'txtMsg(2) -- 显示鼠标右键按下的次数'txtMsg(3) -- ...

vb如何控制鼠标移动。例如在text1、text2中分别输入x、y坐标。单击按钮...
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 C...

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

vb按键控制鼠标移动
开始,控制面板,辅助功能选项,鼠标,选使用使用鼠标键 然后就可以通过数字键盘的2468来控制上下左右了

VB 怎样用键盘控制鼠标移动?
建议使用mouse_event直接设置相对移动坐标 Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)const MOUSEEVENTF_MOVE = &h1'鼠标移动 const MOUSEEVENTF_ABSOLUTE =...

怎样用VB控制鼠标移动
电脑的坐标原点在右上方的顶点 为(0,0)点 至于你说的鼠标移动是点击某个按键让鼠标移动吗? 触发键盘事件 然后在代码终调用 Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As ...

VB 如何禁止鼠标移动到某个控件的范围内?
如果不让鼠标移动到控件上,你可以让控制的显示属性为False呀。或者Enabled属性为False。如果你真的还想显示,就是不想让鼠标移动到控件上,你可以将程序写在窗体控件的mousemove事件上,判断鼠标移动的位置,到位置就不让鼠标动就好了。

VB 如何禁止鼠标移动到某个控件的范围内?
如果不让鼠标移动到控件上,你可以让控制的显示属性为False呀。或者Enabled属性为False。如果你真的还想显示,就是不想让鼠标移动到控件上,你可以将程序写在窗体控件的mousemove事件上,判断鼠标移动的位置,到位置就不让鼠标动就好了。

相似回答