我需要一个VB.NET代码示例,通过使用user32.dll和
以下是我需要实现的伪代码示例:
WM_MOUSEWHEEL
的低级钩子捕获窗体外的鼠标滚轮滚动事件,就像Hans Passant在我其他问题的回答中所说的那样:Record mouse Middle button and wheel scroll。以下是我需要实现的伪代码示例:
Dim mousewheel_up as boolean
Dim mousewheel_down as boolean
Sub that Overides the windows messages to set the mousewheel booleans
If mousewheel_up then msgbox("MouseWheel up")
If mousewheel_down then msgbox("MouseWheel down")
End sub
更新
我试过这个方法,但它只能在表单内工作,而且我不知道如何得到增量值:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Application.AddMessageFilter(New MouseWheelMessageFilter())
End Sub
Public Class MouseWheelMessageFilter : Implements IMessageFilter
Public Function PreFilterMessage1(ByRef m As Message) As Boolean Implements IMessageFilter.PreFilterMessage
' Filter out WM_MOUSEWHEEL messages, which raise the MouseWheel event,
' whenever the Ctrl key is pressed. Otherwise, let them through.
Const WM_MOUSEWHEEL As Integer = &H20A
'If m.Msg = WM_MOUSEWHEEL & My.Computer.Keyboard.CtrlKeyDown Then
If m.Msg = WM_MOUSEWHEEL Then
' Process the message here.
If Form.ActiveForm IsNot Nothing Then
MsgBox("Mouse scrolled!")
' TODO: Insert your code here to adjust the size of the active form.
' As shown above in the If statement, you can retrieve the form that
' is currently active using the static Form.ActiveForm property.
' ...
End If
Return True ' swallow this particular message
End If
Return False ' but let all other messages through
End Function
End Class