Проблемы с реализацией кликов мышки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Проблемы с реализацией кликов мышки

Сообщение Sirik » 17.04.2004 (Сб) 10:49

Надо сэммулировать нажатия кнопок мышки.
Я нашёл решение только полного клика (т.е. посылается сообщение MouseDown и MouseUp сразу).
А мне надо, чтобы эти события можно было посылать отдельно.
Помню, где это втречал, но не помню где, весь инет перерыл - ничего нет.

Вот код "полных" команд:
код модуля:
Код: Выделить всё
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10

Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cbuttons As Long, ByVal dwExtraInfo As Long)
Public Enum enButtonToClick
  btcLeft
  btcRight
  btcMiddle
End Enum

Public Function MouseFullClick(ByVal MBClick As enButtonToClick) As Boolean
  Dim cbuttons As Long
  Dim dwExtraInfo As Long
  Dim mevent As Long
  Select Case MBClick
    Case btcLeft
      mevent = MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP
    Case btcRight
      mevent = MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP
    Case btcMiddle
      mevent = MOUSEEVENTF_MIDDLEDOWN Or MOUSEEVENTF_MIDDLEUP
    Case Else
      MouseFullClick = False
      Exit Function
  End Select
  mouse_event mevent, 0&, 0&, cbuttons, dwExtraInfo
  MouseFullClick = True
End Function


Нажатие левой кнопки:
Код: Выделить всё
Call MouseFullClick(btcLeft)

Помогите...
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.04.2004 (Сб) 11:14

Так и делай, вначале MOUSEEVENTF_LEFTDOWN, а потом MOUSEEVENTF_LEFTUP
Lasciate ogni speranza, voi ch'entrate.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 17.04.2004 (Сб) 15:40

Т.е. вместо
Код: Выделить всё
mouse_event mevent, 0&, 0&, cbuttons, dwExtraInfo

нужно
Код: Выделить всё
mouse_event MOUSEEVENT_LEFTDOWN, 0&, 0&, cbuttons, dwExtraInfo
...
mouse_event MOUSEEVENT_LEFTUP, 0&, 0&, cbuttons, dwExtraInfo
Нет меня больше

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 19.04.2004 (Пн) 12:50

Спасибо за все предложения, помогли!!!
Но есть один вопрос:
я отлавливаю (на форме) события нажатия и отпускания кнопок мышки и передаю эти данные на другой комп в сети.
Так вот, а как отловить событие ДаблКлик на форме? Ведь в этом событии нельзя узнать какой клавишей реализован ДаблКлик?
Код: Выделить всё
Private Sub Form_DblClick()

'как узнать в этой процедуре узнать какая кнопка реализовала ДавлКлик?

End Sub
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 25

    TopList