带有MOUSEEVENTF_MOVE的mouse_event无法在Y轴上移动

时间:2014-03-30 13:27:22

标签: vb.net arduino mouseevent pinvoke

我正在编写一个应用程序,它从正在阅读Wii Nunchuk的Arduino接收数据。正在接收和解析数据但是当我使用MOUSEEVENTF_MOVE发送数据时,鼠标只接收dx中的数据而不是dy,这意味着只能上下移动。我尝试使用静态值(例如100)作为dy但仍然没有成功。

DllImport代码:

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _
Public Sub mouse_event(dwFlags As Long, dx As Long, dy As Long, dwData As Long, dwExtraInfo As Long)
End Sub

Private Const MOUSEEVENTF_MOVE As Integer = &H1

用于移动鼠标的代码:

mouse_event(MOUSEEVENTF_MOVE, dx, dy, 0, 0)

除非mouse_event sub布局错误,否则我不知道我做错了什么。

1 个答案:

答案 0 :(得分:2)

关于相对运动的微软:

系统对指定的相对鼠标移动应用两个测试。如果沿x轴或y轴的指定距离大于第一个鼠标阈值,并且鼠标速度不为零,则系统将距离加倍。如果沿x轴或y轴的指定距离大于第二个鼠标阈值,并且鼠标速度等于2,则系统将应用第一个阈值测试所产生的距离加倍。因此,系统可以沿x或y轴将指定的相对鼠标移动乘以最多四次。

所以你最好使用

Cursor.Position() = New Point(X, Y)

瓦尔特