Мне нужен пример кода, написанный на VB.NET, чтобы захватить прокрутки колесика мыши события вне формы с использованием низкоуровневого крюк с user32.dll и WM_MOUSEWHEEL как сказано Hans Passant ответить на мой другой вопрос: Record mouse Middle button and wheel scrollSetWindowsHookEx для WM_MOUSEWHEEL
Это псевдо-пример того, что мне нужно сделать:
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
UPDATE
попытался это, но она работает только внутри формы, и я не знаю, как получить значение дельты:
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
Вот [нить] (HTTP: // социальный. msdn.microsoft.com/Forums/en-US/vblanguage/thread/5f9a962e-8bb8-455f-8f21-9841c962721b) с сообщением, в котором есть код, который должен делать то, что вы хотите. – tinstaafl