18.08.2024, 09:21
Hallo,
in bestimmten Fällen möchte man das Mousewheeling, also das Scrollen mit der Maus unterbinden oder das Klicken mit dem Mittelbutton abschalten.
Anliegend mal ein Beispiel, wie das erreicht werden kann.
PS: Das gilt bei Bedarf natürlich auch analog für die übrigen Mausfunktionen.
in bestimmten Fällen möchte man das Mousewheeling, also das Scrollen mit der Maus unterbinden oder das Klicken mit dem Mittelbutton abschalten.
Anliegend mal ein Beispiel, wie das erreicht werden kann.
PS: Das gilt bei Bedarf natürlich auch analog für die übrigen Mausfunktionen.
Code:
Private Declare PtrSafe Function SetWindowsHookExA Lib "user32" ( _
ByVal idHook As Long, ByVal lpfn As LongPtr, _
ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
Private Declare PtrSafe Function CallNextHookEx Lib "user32" ( _
ByVal hHook As LongPtr, ByVal nCode As Long, _
ByVal wParam As LongPtr, lParam As Any) As LongPtr
Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" ( _
ByVal hHook As LongPtr) As Long
Dim hHook As LongPtr
Sub MausRadAn()
UnhookWindowsHookEx hHook: hHook = 0
End Sub
Sub MausRadAus()
' Baut den Mousehook auf 14 = WH_MOUSE_LL
If hHook = 0 Then hHook = SetWindowsHookExA(14, _
AddressOf MouseProc, Application.HinstancePtr, 0)
End Sub
Private Function MouseProc(ByVal nCode As Long, ByVal wParam As LongPtr, _
lParam As LongPtr) As LongPtr
' Fängt Mausrad und MittelButton ab
Const WM_MOUSEWHEEL As Long = &H20A
Const WM_MBUTTONDOWN As Long = &H207
Const WM_MBUTTONUP As Long = &H208
If nCode = 0 Then ' 0 = HC_ACTION
Select Case wParam
Case WM_MOUSEWHEEL, WM_MBUTTONDOWN, WM_MBUTTONUP
MouseProc = 1: Exit Function
End Select
End If
MouseProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
End Function
'########### In das gewünschte Tabellenmodul #############
Private Sub Worksheet_Activate()
Call MausRadAus
End Sub
Private Sub Worksheet_Deactivate()
Call MausRadAn
End Sub
ByVal idHook As Long, ByVal lpfn As LongPtr, _
ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
Private Declare PtrSafe Function CallNextHookEx Lib "user32" ( _
ByVal hHook As LongPtr, ByVal nCode As Long, _
ByVal wParam As LongPtr, lParam As Any) As LongPtr
Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" ( _
ByVal hHook As LongPtr) As Long
Dim hHook As LongPtr
Sub MausRadAn()
UnhookWindowsHookEx hHook: hHook = 0
End Sub
Sub MausRadAus()
' Baut den Mousehook auf 14 = WH_MOUSE_LL
If hHook = 0 Then hHook = SetWindowsHookExA(14, _
AddressOf MouseProc, Application.HinstancePtr, 0)
End Sub
Private Function MouseProc(ByVal nCode As Long, ByVal wParam As LongPtr, _
lParam As LongPtr) As LongPtr
' Fängt Mausrad und MittelButton ab
Const WM_MOUSEWHEEL As Long = &H20A
Const WM_MBUTTONDOWN As Long = &H207
Const WM_MBUTTONUP As Long = &H208
If nCode = 0 Then ' 0 = HC_ACTION
Select Case wParam
Case WM_MOUSEWHEEL, WM_MBUTTONDOWN, WM_MBUTTONUP
MouseProc = 1: Exit Function
End Select
End If
MouseProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
End Function
'########### In das gewünschte Tabellenmodul #############
Private Sub Worksheet_Activate()
Call MausRadAus
End Sub
Private Sub Worksheet_Deactivate()
Call MausRadAn
End Sub
_________
viele Grüße
Karl-Heinz
viele Grüße
Karl-Heinz