Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Хук мыши Добавлено: 05.12.09 23:40  

Автор вопроса:  Winand | Web-сайт: winandfx.narod.ru
Делаю хук через WH_MOUSE_LL, когда программа делает что-то длительное, например подключение к интернет-потоку, то процедура обработки хука естессно не может обрабатывать системные сообщения и мыша не двигается)
В связи с этим два вопроса возникают. Можно ли сделать хук лишенный такого недостатка? можно ли получать узнавать о кручении колеса мыши без хука?

Ответить

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

Номер ответа: 1
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #1
Добавлено: 06.12.09 00:04
Я кручение делал так, вроде не глючило.
  1. Option Explicit
  2. Private Declare Function CallWindowProcA Lib "user32" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  3. Private Declare Function SetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  4. Private Declare Function SetWindowTextA Lib "user32" (ByVal hwnd As Long, ByVal lpString As String) As Long
  5. Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
  6.  
  7. Private Const GWL_WNDPROC = -4
  8. Private Const WM_MOUSEWHEEL = &H20A
  9. Private lpPrevWndProc As Long, Wheel As Integer
  10.  
  11. Sub Hook(hwnd As Long)
  12. lpPrevWndProc = SetWindowLongA(hwnd, GWL_WNDPROC, AddressOf WindowProc)
  13. End Sub
  14.  
  15. Sub UnHook(hwnd As Long)
  16. Call SetWindowLongA(hwnd, GWL_WNDPROC, lpPrevWndProc)
  17. End Sub
  18.  
  19. Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  20. On Error GoTo xErr
  21. If uMsg = WM_MOUSEWHEEL Then
  22. If wParam = -7864320 Or wParam = -23592960 Or wParam = -15728640 Then Wheel = -1
  23. If wParam = 7864320 Or wParam = 23592960 Or wParam = 15728640 Then Wheel = 1
  24. Else
  25. WindowProc = CallWindowProcA(lpPrevWndProc, hwnd, uMsg, wParam, lParam)
  26. End If
  27. xErr:
  28. End Function

Ответить

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



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 06.12.09 10:42
Мне кажется это не глобальное кручение, а только, когда программа в фокусе

Ответить

Страница: 1 |

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



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