Страница: 1 |
Страница: 1 |
Вопрос: Хук на мышь...
Добавлено: 25.06.04 12:05
Автор вопроса: Barsik | Web-сайт:
как поставить хук на клики мыши....
и на прокрутку колеса.....
Заранее благодарен!!!
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #1
Добавлено: 25.06.04 12:27
Вроде VB не поддерживает хуки. Хоят может если в ActiveX DLL.
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 25.06.04 13:50
все уже разрешилось с пом. hHook = SetWindowsHookEx(WH_JOURNALRECORD, AddressOf HookProc, App.hInstance, 0)
Номер ответа: 3
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #3
Добавлено: 25.06.04 14:02
Прмерчик кинешь? Что то я такое уже читал. Там вроде проблемы есть. Да и как насчёт 9х?
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 25.06.04 15:19
вот кидаю... сам под 9х не проверял, но Andr говорит что работает...
Номер ответа: 5
Автор ответа:
Chill
ICQ: 554200
Вопросов: 101
Ответов: 343
Профиль | | #5
Добавлено: 25.06.04 16:09
журнальные хуки - дело хорошее, но опасное... можно всю систему грохнуть, если что-нибудь неправильно сделаешь... и любой журнальный хук снимается по 3-ем пальцам... т.ч. это тоже надо учитывать...
Номер ответа: 6
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #6
Добавлено: 25.06.04 17:43
Может так надёжнее: работает в XP без проблем, 98 - не пробовал
Public Sub Hook(hwnd As Long)
lpPrevWndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
On Error GoTo xErr
If uMsg = WM_MOUSEWHEEL Then
If wParam = -7864320 Or wParam = -23592960 Or wParam = -15728640 Then Wheel = -1
If wParam = 7864320 Or wParam = 23592960 Or wParam = 15728640 Then Wheel = 1
frmMain.HOOKData
Else
WindowProc = CallWindowProcA(lpPrevWndProc, hwnd, uMsg, wParam, lParam)
End If
xErr:
End Function
Тут же можно и WM_LBUTTONUP прикрутить
Номер ответа: 7
Автор ответа:
Chill
ICQ: 554200
Вопросов: 101
Ответов: 343
Профиль | | #7
Добавлено: 25.06.04 17:54
2cresta: Ты все окна в системе сабклассить будешь?
Номер ответа: 8
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #8
Добавлено: 25.06.04 18:07
Зачем ты ему пример субклассинга показываешь. Ему же хук нужен.
Номер ответа: 9
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #9
Добавлено: 25.06.04 18:10
да, ему нужно было именно все окна... а на сколько мне известно функцию SetWindowsHookEx с параметром WH_MOUSE в VB использовать нельзя по простой причине, что MS не предусмотрели возможность создания DLL в VB
Номер ответа: 10
Автор ответа:
Chill
ICQ: 554200
Вопросов: 101
Ответов: 343
Профиль | | #10
Добавлено: 25.06.04 18:18
2sne: а ему и не нужен WH_MOUSE, ему нужен WH_JOURNALRECORD, а потом в функции обработки хука нужно создать select case, в котором смотреть WM_MOUSEMOVE, вот и все... у меня есть пример на Си для хука на клаву... могу прислать, с мышкой таже фигня, все однотипно...
Номер ответа: 11
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #11
Добавлено: 25.06.04 18:57
Пардон, если на всю систему. Подумал, что на свой проект и только. Хотя, кажется и в этом случае можно поймать мышь. Геморойно конечно, но в принципе возможно.
А вопрос можно было бы сформулировать поточнее. А то мы тут в догадках теряемся, что же ему было надо WM_MOUSEWHEEL или WH_JOURNALRECORD
Номер ответа: 12
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 25.06.04 20:56
2Chill, нет ты просто сказал что журнальными хуками нужно пользоваться с осторожностью, я вот и говорю, что другого выхода попросту нет!
PS
Так все и сделали, см. ответ №2
Номер ответа: 13
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #13
Добавлено: 25.06.04 21:13
Всем спасибо за обсуждение......
Я с помощью sne уже разобрался. sne RESPECT!!!
Вопрос закрыт!!!
Номер ответа: 14
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #14
Добавлено: 26.06.04 02:50
Вот есть ещё что то
Дата: 14 марта 2002 г. | Автор: Оловянников Аркадий | Загрузок: 1101
SysHookDll (13 Kb) Программа за слежением за клавиатурой и мышкой. Вы будете первым кто узнает о нажатии на кнопочку Этот пример - продолжает серию примеров Аркадия Оловянникова за системными событиями.
http://www.vbnet.ru/sample/sampledownload.asp?id=100