2016-08-02 10 views
0

Я создаю настольное приложение в VB.Net, которое должно имитировать нажатия мыши в других приложениях. Вот код, который я получил до сих пор:Попытка имитировать мышь вниз, но при этом возникает ошибка дисбаланса стека. Возможно, с неправильными переменными?

Public Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtraInfo As Integer) 
Public Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down 
Public Const MOUSEEVENTF_LEFTUP = &H4 ' left button up 
Public Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' middle button down 
Public Const MOUSEEVENTF_MIDDLEUP = &H40 ' middle button up 
Public Const MOUSEEVENTF_RIGHTDOWN = &H8 ' right button down 
Public Const MOUSEEVENTF_RIGHTUP = &H10 ' right button up 

Теперь, когда я звоню, я это сделать:

mouse_event(MOUSEEVENTF_LEFTDOWN, Cursor.Position.X, Cursor.Position.Y, 0, 0) 

Однако я получаю сообщение об ошибке:

вызова функции PInvoke небалансные стек

Я сделал некоторые исследования, и я полагаю, что я underst и что это значит, но я не могу это исправить.

Я пробовал делать Long.Parse (значение) для всех моих значений Integer, но я все равно получаю ошибку.

Может ли кто-нибудь предложить исправить?

Если вам нужна дополнительная информация, то дайте мне знать!

  • Visual Studio 2010
  • VB.NET 4,5
+1

Ваш API вызова выглядит VB6-иш. См. [Как дважды щелкнуть по позиции курсора] (http://stackoverflow.com/a/24291099/719186) – LarsTech

+0

Я знаю, хаха, это довольно VB6-иш. Я не нашел способ полностью конвертировать его в VB.Net, я старался изо всех сил! –

+0

@LarsTech Это исправило это! Огромное вам спасибо: D –

ответ

0

Проблема заключалась в том, что это очень VB6-у.

Вот обновленный код.

Public Declare Sub mouse_event Lib "User32.dll" Alias "mouse_event" (ByVal dwFlags As UInt32, ByVal dx As UInt32, ByVal dy As UInt32, ByVal dwData As UInt32, ByVal dwExtraInfo As Int32) 
Public Const MOUSEEVENTF_LEFTDOWN As UInt32 = &HE0002 
Public Const MOUSEEVENTF_LEFTUP As UInt32 = &HE0004 
Public Const MOUSEEVENTF_RIGHTDOWN As UInt32 = &HE0008 
Public Const MOUSEEVENTF_RIGHTUP As UInt32 = &HE0010 

Благодаря LarsTech

 Смежные вопросы

  • Нет связанных вопросов^_^