2015-08-30 3 views
0

после работы как 3 часа Мне наконец-то удалось сделать код, чтобы сделать щелчок мыши внутри окна, не перемещая курсор, или иметь окно с использованием sendMessage. Вот некоторые из моего кода:щелчок мышью при использовании sendMessage issue

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 не работает, клик происходит в моей последней позиции мыши внутри игры. Любые идеи, как я могу исправить эту проблему?

+0

Возможно, игра не доверяет всем получаемым оконным сообщениям и решает запросить систему для позиции мыши, а не доверять координатам, предоставляемым некоторым случайным сообщением. –

+0

Перед отправкой кликом измените свойство 'Cursor.Position'. – Drarig29

ответ

0

Попробуйте отправить MouseMove событие в окне первого, как, например:

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

Если это не сработает, попробуйте добавить Threading.Thread.Sleep (100) после того, как событие перемещения мыши будет отправить в окно ,