我贴个我以前的代码你看看: 首先建个模块,模块代码如下:Option ExplicitPrivate Declare Function CallWindowProc Lib "User32" Alias "CallWindowProcA" (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 SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Const GWL_WNDPROC = -4 Private Const WM_MOUSEWHEEL = &H20AGlobal lpPrevWndProcA As Long Public bMouseFlag As Boolean '鼠标事件激活标志 Public Sub HookMouse(ByVal hwnd As Long) lpPrevWndProcA = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc) End SubPublic Sub UnHookMouse(ByVal hwnd As Long) SetWindowLong hwnd, GWL_WNDPROC, lpPrevWndProcA End SubPrivate Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Select Case uMsg Case WM_MOUSEWHEEL '滚动 Dim wzDelta, wKeys As Integer 'wzDelta传递滚轮滚动的快慢,该值小于零表示滚轮向后滚动(朝用户方向), '大于零表示滚轮向前滚动(朝显示器方向) wzDelta = HIWORD(wParam) 'wKeys指出是否有CTRL=8、SHIFT=4、鼠标键(左=2、中=16、右=2、附加)按下,允许复合 wKeys = LOWORD(wParam) '-------------------------------------------------- If wzDelta < 0 Then '朝用户方向 Form1.Top = Form1.Top + 500 Form1.Label1.Caption = "鼠标滚轮向下滚动" Else '朝显示器方向 Form1.Top = Form1.Top - 500 Form1.Label1.Caption = "鼠标滚轮向上滚动" End If '-------------------------------------------------- Case Else WindowProc = CallWindowProc(lpPrevWndProcA, hw, uMsg, wParam, lParam) End SelectEnd FunctionPrivate Function HIWORD(LongIn As Long) As Integer HIWORD = (LongIn And &HFFFF0000) \ &H10000 '取出32位值的高16位 End Function Private Function LOWORD(LongIn As Long) As Integer LOWORD = LongIn And &HFFFF& '取出32位值的低16位 End Function其次是窗口:Private Sub Form_Load() HookMouse Me.hwnd End SubPrivate Sub Form_Unload(Cancel As Integer) UnHookMouse Me.hwnd End SubPrivate Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Form1.Left = Left - 500 Label1.Caption = "按下鼠标左键" ElseIf Button = 2 Then Form1.Left = Left + 500 Label1.Caption = "按下鼠标右键" ElseIf Button = 4 Then Move (Screen.Width - Form1.Width) / 2, (Screen.Height - Form1.Height) / 2 Label1.Caption = "按下鼠标滚轮键" End If End Sub 只是一个示例,希望对你有帮助
滚轴不知道
http://www.programbbs.com/doc/3107.htm
还没有来的及验证,自已先看一下吧
首先建个模块,模块代码如下:Option ExplicitPrivate Declare Function CallWindowProc Lib "User32" Alias "CallWindowProcA" (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 SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_WNDPROC = -4
Private Const WM_MOUSEWHEEL = &H20AGlobal lpPrevWndProcA As Long
Public bMouseFlag As Boolean '鼠标事件激活标志
Public Sub HookMouse(ByVal hwnd As Long)
lpPrevWndProcA = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
End SubPublic Sub UnHookMouse(ByVal hwnd As Long)
SetWindowLong hwnd, GWL_WNDPROC, lpPrevWndProcA
End SubPrivate Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Select Case uMsg
Case WM_MOUSEWHEEL '滚动
Dim wzDelta, wKeys As Integer 'wzDelta传递滚轮滚动的快慢,该值小于零表示滚轮向后滚动(朝用户方向),
'大于零表示滚轮向前滚动(朝显示器方向)
wzDelta = HIWORD(wParam) 'wKeys指出是否有CTRL=8、SHIFT=4、鼠标键(左=2、中=16、右=2、附加)按下,允许复合
wKeys = LOWORD(wParam)
'--------------------------------------------------
If wzDelta < 0 Then '朝用户方向
Form1.Top = Form1.Top + 500
Form1.Label1.Caption = "鼠标滚轮向下滚动"
Else '朝显示器方向
Form1.Top = Form1.Top - 500
Form1.Label1.Caption = "鼠标滚轮向上滚动"
End If
'--------------------------------------------------
Case Else WindowProc = CallWindowProc(lpPrevWndProcA, hw, uMsg, wParam, lParam) End SelectEnd FunctionPrivate Function HIWORD(LongIn As Long) As Integer
HIWORD = (LongIn And &HFFFF0000) \ &H10000 '取出32位值的高16位
End Function
Private Function LOWORD(LongIn As Long) As Integer
LOWORD = LongIn And &HFFFF& '取出32位值的低16位
End Function其次是窗口:Private Sub Form_Load()
HookMouse Me.hwnd
End SubPrivate Sub Form_Unload(Cancel As Integer)
UnHookMouse Me.hwnd
End SubPrivate Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Form1.Left = Left - 500
Label1.Caption = "按下鼠标左键"
ElseIf Button = 2 Then
Form1.Left = Left + 500
Label1.Caption = "按下鼠标右键"
ElseIf Button = 4 Then
Move (Screen.Width - Form1.Width) / 2, (Screen.Height - Form1.Height) / 2
Label1.Caption = "按下鼠标滚轮键"
End If
End Sub
只是一个示例,希望对你有帮助