Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Хук на мышь... Добавлено: 25.06.04 12:05  

Автор вопроса:  Barsik | Web-сайт: barsik.newmail.ru | ICQ: 343368641 
как поставить хук на клики мыши....
и на прокрутку колеса.....
Заранее благодарен!!!

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #1
Добавлено: 25.06.04 12:27
 Вроде VB не поддерживает хуки. Хоят может если в ActiveX DLL.

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 25.06.04 13:50
все уже разрешилось с пом. hHook = SetWindowsHookEx(WH_JOURNALRECORD, AddressOf HookProc, App.hInstance, 0)

Ответить

Номер ответа: 3
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #3
Добавлено: 25.06.04 14:02
 Прмерчик кинешь? Что то я такое уже читал. Там вроде проблемы есть. Да и как насчёт 9х?

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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-сайт: basicproduction.nm.ru/
 Профиль | | #8
Добавлено: 25.06.04 18:07
 Зачем ты ему пример субклассинга показываешь. Ему же хук нужен.

Ответить

Номер ответа: 9
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #12
Добавлено: 25.06.04 20:56
2Chill, нет ты просто сказал что журнальными хуками нужно пользоваться с осторожностью, я вот и говорю, что другого выхода попросту нет!

PS
Так все и сделали, см. ответ №2 :)

Ответить

Номер ответа: 13
Автор ответа:
 Barsik



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #13
Добавлено: 25.06.04 21:13
Всем спасибо за обсуждение......
Я с помощью sne уже разобрался. sne RESPECT!!!
Вопрос закрыт!!!

Ответить

Номер ответа: 14
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #14
Добавлено: 26.06.04 02:50
Вот есть ещё что то

Дата: 14 марта 2002 г. | Автор: Оловянников Аркадий | Загрузок: 1101
 
SysHookDll (13 Kb) Программа за слежением за клавиатурой и мышкой. Вы будете первым кто узнает о нажатии на кнопочку ;-) Этот пример - продолжает серию примеров Аркадия Оловянникова за системными событиями.
 
http://www.vbnet.ru/sample/sampledownload.asp?id=100

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам