0

在工作了 3 个小时之后,我终于设法编写了一个代码,可以在不移动光标或使用 sendMessage 使窗口处于活动状态的情况下在窗口内单击鼠标。这是我的一些代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles     Button1.Click
    Dim x As Integer = Integer.Parse(TextBox1.Text)
    Dim y As Integer = Integer.Parse(TextBox2.Text)
    If (hw) Then
        SendMessage(hw, WM_LBUTTONDOWN, 0, MAKELONG(x, y))
        SendMessage(hw, WM_LBUTTONUP, 0, MAKELONG(x, y))
    End If
End Sub

我在记事本中试过,效果很好。但是,我正在尝试在游戏中执行此操作,但由于某种原因 x,y 不起作用,单击发生在我在游戏中的最后一个鼠标位置。有什么想法可以解决这个问题吗?

4

1 回答 1

0

尝试先将 mousemove 事件发送到窗口,例如:

Public Const WM_MOUSEMOVE = &H200
SendMessage(MainWindow, WM_MOUSEMOVE, 0, MakeDWord(P.X, P.Y))

如果这不起作用,请尝试在鼠标移动事件发送到窗口后添加 Threading.Thread.Sleep(100)。

于 2016-08-30T10:08:58.783 回答