vb.net - 让鼠标光标移动到一个位置?

标签 vb.net automation mouse-cursor cursor-position

我知道如何使用以下方法使光标移动到某个位置:

Cursor.Position = New Point(XPosition, YPosition)

但这样做会使它立即移动到那里,我希望它以设定的速度从当前位置移动到新位置。

速度将由两个因素决定:

1 - 当前位置和新位置之间的距离 - EG。与以 10px/s 的速度从 0X 到 1000X 相比,以 5px/s 的速度从 0X 到 500X。

2 - 到达目标位置的有限时间。

我只知道这样做的一种困惑的方式类似于:

If Cursor.Position.X < XPosition Then 
    Dim Speed as Integer = XPosition - Cursor.Position.X
    While Cursor.Position.X < XPosition
        Cursor.Position = New Point(Cursor.Position.X + Speed, Blah..)
    End While
End If
'Etc..

这将需要多个 If 语句来检查当前 X/Y 位置是否高于/低于目标 X/Y 位置。

有什么方法可以让代码更简洁吗?

最佳答案

听起来您需要直线的参数方程:

x = x1 + (x2-x1)*t

在哪里
x1 = 开始 x,
x2 = 结束 x,并且
t = 0 和 1 之间的时间。

因此,如果您希望光标在 10 秒内从 x1(10,20) 移动到 x2(30,60)...

1 秒:
x = 10 + (30-10)*.1 ; x = 12
y = 20 + (60-20)*.1 ; y = 24
2 秒内:
x = 10 + (30-10)*.2 ; x = 14
y = 20 + (60-20)*.2 ; y = 28
3 秒内:
x = 10 + (30-10)*.3 ; x = 16
y = 20 + (60-20)*.3 ; y = 32

编辑:
这是一个实际的想法(不经常使用 VB,所以它并不完美)
http://ideone.com/c9iLTA

关于vb.net - 让鼠标光标移动到一个位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20656102/

相关文章:

javascript - 跨浏览器 GRAB 游标(-moz、-webkit)

jquery - 如何使用 JQuery 将鼠标悬停在动态列表上时将光标更改为指针

vb.net - 如何唯一标识动态加载的控件

javascript - 我如何使用 Cypress 在特定的 HTML <select> 字段中选择 <option>?

automation - 是否有任何苹果脚本可以将任务控制键盘选项设置为空?

ubuntu - dpkg-reconfigure tzdata 的非交互方法

c# - 在 .Net、WinForms 中在运行时添加用户控件缩放时出现问题

vb.net - 如何使用 Excel Interop 从行索引和列索引中获取范围对象?

mysql - 防止重复输入数据库

jquery - 为什么更改 css 光标属性会阻止我的 ajax 帖子工作?