Bonjour
Je cherche à neutraliser la roulette de ma souris au chargement de mon formulaire et à la déneutraliser à la fermeture.
J'ai trouvé la solution d'Arkham46 et je l'en remercie.
Dans un premier temps, je copie la dll dans le même répertoire que mon appli et non sous C:\Windows\system32
Ensuite le code d'Arkham dans un module :
mais à la compilation de ce code ce message apparaît :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 Option Compare Database Option Explicit Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long Private Declare Function GetLongPathName Lib "kernel32" Alias "GetLongPathNameA" _ (ByVal lpszShortPath As String, ByVal lpszLongPath As String, _ ByVal cchBuffer As Long) As Long Private Declare Function DVPDllRegisterServer Lib "MouseWheelDVP" Alias "DllRegisterServer" () As Long Private Declare Function DVPDllUnregisterServer Lib "MouseWheelDVP" Alias "DllUnregisterServer" () As Long Private Declare Function DVPDllCanUnloadNow Lib "MouseWheelDVP" Alias "DllCanUnloadNow" () As Long ' Enregistre la librairie Private Sub FnRegLib() Dim lLib As Long ' Identifiant de la librairie Dim lReg As Long ' Pointeur de la fonction d'enregistrement ' Référence la librairie dans Access On Error Resume Next ' si la librairie est déjà référencée on essaye quand même de l'enregistrer Application.References.AddFromFile ApplicationPath & "MouseWheelDVP.dll" On Error GoTo Gestion_Erreurs ' Charge la librarie lLib = LoadLibrary(ApplicationPath & "MouseWheelDVP.dll") If lLib = 0 Then MsgBox "Impossible de trouver la librairie :" & vbCrLf & ApplicationPath & "MouseWheelDVP.dll" Exit Sub End If ' Enregistre la librairie (en plus du AddFromFile qui parfois n'enregistre pas correctement la librairie) If DVPDllRegisterServer <> 0 Then MsgBox "Erreur lors du référencement de la librairie" End If Gestion_Erreurs: If Err.Number <> 0 Then MsgBox Err.Description ' Libère la librairie FreeLibrary lLib End Sub ' Désenregistre la librairie Private Sub FnUnregLib() Dim lLib As Long ' Identifiant de la librairie Dim lCanUnload As Long ' Pointeur de la fonction de test d'utilisation de la dll Dim lUnReg As Long ' Pointeur de la fonction d'enregistrement ' Supprime la référence dans Access On Error Resume Next ' si la librairie n'est pas référencée on essaye quand même de la désenregistrer Application.References.Remove Application.References.Item("MouseWheelDVP") On Error GoTo Gestion_Erreurs ' Charge la librarie lLib = LoadLibrary(ApplicationPath & "MouseWheelDVP.dll") If lLib = 0 Then MsgBox "Impossible de trouver la librairie :" & vbCrLf & ApplicationPath & "MouseWheelDVP.dll" Exit Sub End If ' Vérifie que la librairie n'est pas en cours d'utilisation If DVPDllCanUnloadNow <> 0 Then MsgBox "Impossible de déréférencer la librairie maintenant" & _ vbCrLf & "Quittez les formulaires utilisant la librairie" GoTo Gestion_Erreurs End If ' Désenregistre la librairie (elle disparaît alors de la liste des références) If DVPDllUnregisterServer <> 0 Then MsgBox "Erreur lors du référencement de la librairie" End If Gestion_Erreurs: If Err.Number <> 0 Then MsgBox Err.Description ' Libère la librairie FreeLibrary lLib End Sub ' Récupère le chemin de l'application (chemin long) ' (pour remplacer CurrentProject.Path dans Access 97) Public Function ApplicationPath() As String Dim lRet As Long Dim lShortPathName As String Dim lLongPathName As String lLongPathName = Space(1024) lShortPathName = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Dir(CurrentDb.Name))) lRet = GetLongPathName(lShortPathName, lLongPathName, Len(lLongPathName)) ApplicationPath = Left(lLongPathName, lRet) End Function
"Type défini par l'utilisateur non défini"
Qu'en pensez-vous ?
Merci
Partager