Страница:  1   | 
		
		
			
	
		 
		
			
  
      
    
Вопрос: Хук мыши  
     
    
Добавлено:  05.12.09 23:40 
     
      
   
		
			
			  
    
      
Автор вопроса:    Winand  | Web-сайт:   winandfx.narod.ru
       
     
    
      
Делаю хук через WH_MOUSE_LL, когда программа делает что-то длительное, например подключение к интернет-потоку, то процедура обработки хука естессно не может обрабатывать системные сообщения и мыша не двигается)
 
В связи с этим два вопроса возникают. Можно ли сделать хук лишенный такого недостатка? можно ли получать узнавать о кручении колеса мыши без хука?
Ответить 
      
 
     
  
		
			
		
		
			
		
	  
    
      
Номер ответа:  1Автор ответа:   AWP  
ICQ:  345685652 Вопросов:  96Ответов:  1212 
       
      
 Web-сайт:  xawp.narod.ru   Профиль  |  | #1 
       
Добавлено:   06.12.09 00:04
       
     
    
      
Я кручение делал так, вроде не глючило.
 
Option  Explicit
 
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 
 
Private  Declare  Function  SetWindowLongA Lib  "user32"  (ByVal  hwnd As  Long , ByVal  nIndex As  Long , ByVal  dwNewLong As  Long ) As  Long 
 
Private  Declare  Function  SetWindowTextA Lib  "user32"  (ByVal  hwnd As  Long , ByVal  lpString As  String ) As  Long 
 
Public  Declare  Function  GetAsyncKeyState Lib  "user32"  (ByVal  vKey As  Long ) As  Integer 
 
  
Private  Const  GWL_WNDPROC = -4
 
Private  Const  WM_MOUSEWHEEL = &H20A
 
Private  lpPrevWndProc As  Long , Wheel As  Integer 
 
  
Sub  Hook(hwnd As  Long )
 
lpPrevWndProc = SetWindowLongA(hwnd, GWL_WNDPROC, AddressOf  WindowProc)
 
End  Sub 
 
  
Sub  UnHook(hwnd As  Long )
 
Call  SetWindowLongA(hwnd, GWL_WNDPROC, lpPrevWndProc)
 
End  Sub 
 
  
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
 
Else 
 
WindowProc = CallWindowProcA(lpPrevWndProc, hwnd, uMsg, wParam, lParam)
 
End  If 
 
xErr:
 
End  Function  
Ответить 
      
 
     
  
	  Страница:  1   | 
 
		
			Поиск по форуму