Работа с мышью

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

Работа с мышью

Сообщение step » 03.08.2004 (Вт) 16:37

Как програмно на Vbasic проследить клик мыши и двойной клик мыши, вне формы??? И как програмно испольнить клик мыши, вне формы???(Т.е. я навожу мышь на ПУСК, а когда таймер на форме срабатывает, мышь сама кликает по ПУСКУ) Заранее спасибо!!!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.08.2004 (Вт) 17:35

Клики ловятся через глобальные хуки (страшный гемор).
Клики посылаются через sendmessage (реальное положение мыши при этом неважно).
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.08.2004 (Вт) 18:50

GSerg писал(а):Клики ловятся через глобальные хуки (страшный гемор).

Глобальный журнальный хук ставится очень легко.
Пример: http://vbrussian.com/Controls.asp?ID=61

GSerg писал(а):Клики посылаются через sendmessage (реальное положение мыши при этом неважно).

"Вообще" легче их посылать через mouse_event, хотя если там конкретно кнопка Пуск - можно и BM_CLICK.

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

Сообщение A.A.Z. » 03.08.2004 (Вт) 22:18

Гемор происходит, когда пытаешься это с нуля сделать :) VB то и дело закрывается. А когда кто-то выкладывает готовый код - конечно, гемора никакого. :roll:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.08.2004 (Ср) 1:26

A.A.Z. писал(а):Гемор происходит, когда пытаешься это с нуля сделать :) VB то и дело закрывается. А когда кто-то выкладывает готовый код - конечно, гемора никакого. :roll:

Ну так давайте пользоваться достижениями цивилизации! Уже почти два года (пример выложен 27 августа 2002) никакого гемора нет!

step
Бывалый
Бывалый
 
Сообщения: 217
Зарегистрирован: 03.08.2004 (Вт) 16:19

Работа с мышью

Сообщение step » 04.08.2004 (Ср) 12:07

ОГРОМНОЕ СПАСИБО ВСЕМ!!! ЭТО ТО, ЧТО НУЖНО!!!!!!!!!
НО ЕСТЬ ЕЩЁ ВОПРОС======= Подскажите как програмно совершить клик???

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Работа с мышью

Сообщение tyomitch » 04.08.2004 (Ср) 15:46

step писал(а):ОГРОМНОЕ СПАСИБО ВСЕМ!!! ЭТО ТО, ЧТО НУЖНО!!!!!!!!!
НО ЕСТЬ ЕЩЁ ВОПРОС======= Подскажите как програмно совершить клик???

Конкретно кнопки Пуск?
Код: Выделить всё
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As String, ByVal lpszWindow As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const BM_CLICK As Long = &HF5

Sub Main()
Dim hWnd As Long
hWnd = FindWindow("Shell_TrayWnd", vbNullString)
hWnd = FindWindowEx(hWnd, 0, "Button", vbNullString)
SendMessage hWnd, BM_CLICK, 0, 0
End Sub

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 01.09.2004 (Ср) 14:06

Не-а, такой клик не везде и не всегда работает. Вот стопудовый клик:

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)

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_ABSOLUTE = &H8000
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10

Private Sub MakeClick
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
End Sub
Программисты не глючат - глючат компиляторы...


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23

    TopList