Scrollen mit dem Mausrad und Mittelbuttonklick abschalten
#1
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.

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

_________
viele Grüße
Karl-Heinz
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste