Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Управление мышью


Автор: magus 22.9.2007, 21:33
Уже было что-то подобное, но там много лишнего, а нужного мне нет. VB знаю не очень хорошо, так что не пинайте сильно...
Необходимо полная иммитация работы с мышью. Как перемещать курсор я уже нашел, как обрабатывать информацию с экранатоже. Теперь ищу имитацию нажатия кнопок. +к этому хотелось бы организовать сочетание shift+rigtclick, ctrl+rightclick.
Заранее благодарен.

Автор: magus 23.9.2007, 07:49
С эмуляцией клика я тоже разобрался, осталось только сделать зажатие шифта.
Может это реально сделать при помощи SendKeys? Я так и не разобрался, что означает аргумент Wait.

Автор: magus 23.9.2007, 08:24
Все. Нашел и это. Кому интересно, могу выложить код.

Автор: magus 23.9.2007, 17:56
Не думаю, что данные коды имеют хоть какую-то ценность, так как большую их чать я нашел на этом же форуме... Но раз просят:

1) Установка курсора в оперделенное место экрана:

Код

  Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
  ' подгружаем функцию SetCursorPos из user32.dll, чтобы использовать ее в дальнейшем

  Private Sub Form_Load()
  Call SetCursorPos(x, y) ' x, y - координаты на экране, куда будет перемещен курсор
  End Sub


2) Эмулирование нажатия кнопок мыши:

Код

  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) 
  ' Устанавливаем необходимые нам константы
   Const MOU_LD = &H2     'нажатие левой кнопки
   Const MOU_LU = &H4     'отпускание левой кнопки
   Const MOU_MD = &H20  'нажатие средней кнопки
   Const MOU_MU = &H40  'отпускание средней кнопки
   Const MOU_RD = &H8     'нажатие правой кноки
   Const MOU_RU = &H10   'отпускание правой кнопки
 
 Private Sub Form_Load()
  mouse_event MOU_RD, x, y, 0&, 0&
  mouse_event MOU_RU, x, y, 0&, 0&
  ' имитация клика правой кнопкой. для того, чтобы сделать клик другой кнопкой, меняем константы на необходимы.  x и y по идее место, где будет произведен клик, но у меня не работает, вместо них приходится использовать SetCursorPos перед функцией
 End Sub


3) Зажатие Shift/ctrl:

Код

  ' Подгружаем необходимую функцию:
  Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
  ' Устанавливаем константы:
  Private Const VK_LCONTROL = &HA2
  Private Const VK_SHIFT As Long = &H10

  Private Sub Form_Load()
  keybd_event VK_SHIFT, 0, 0, 0   ' зажимаем кнопку (шифт в данном случае)
  .....
  keybd_event VK_SHIFT, 0, KEYEVENTF_KEYUP, 0  ' отпускаем
  End Sub


Вот и все. Возможно есть ошибки, писал второпях, тч вносите свои исправления в случае чего.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)