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

谢谢大师指点。。。
展开
 我来答
wu_kang_lin
2012-02-15 · TA获得超过170个赞
知道小有建树答主
回答量:490
采纳率:50%
帮助的人:314万
展开全部
例:单击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,标示是否采用绝对坐标 )
百度网友4684e1e
2012-02-15 · TA获得超过2309个赞
知道小有建树答主
回答量:1266
采纳率:0%
帮助的人:547万
展开全部
我怎么感觉,LS两位有点答非所问。呵呵、你想只是改变窗体中的位置不是屏幕上的位置的话。

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

二:VB默认单位为缇,普通的分辨率一般叫像素,1像素=15缇
所以窗体的长度换算成像素的话应该是me.width/15,自己测试下。。这样就可以实现VB的单位转为屏幕像素单位了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lrh3321
2012-02-15 · TA获得超过2182个赞
知道大有可为答主
回答量:2296
采纳率:75%
帮助的人:2107万
展开全部
用两个API函数,SetCurPos 和GetCurPos ,用这两个API需要声明一个PointApi数据类型,用VB企业版的的API浏览器可以查到函数和数据类型的声明。
移动鼠标可以用 SetCurPos ()这个函数(以坐标的形式更改鼠标的位置),获取鼠标当前位置可以用GetCurPos()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微标防伪防窜货标签定制

2020-02-28 · TA获得超过2016个赞
知道大有可为答主
回答量:1512
采纳率:87%
帮助的人:544万
展开全部
如果用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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式