media6
Messages postés51Date d'inscriptionmercredi 29 septembre 2004StatutMembreDernière intervention 7 juillet 2010
-
17 févr. 2010 à 18:30
media6
Messages postés51Date d'inscriptionmercredi 29 septembre 2004StatutMembreDernière intervention 7 juillet 2010
-
18 févr. 2010 à 23:50
Bonjour,
j'ai besoin de "capter" un clic de souris (en l'occurence un clic gauche) et sa position en X et en Y dans l'application pilotée par VBA.
Je ne veux pas traîner de dll donc pas question de hook de bas niveau.
J'ai essayé avec l'API SendDlgItemMessage qui fonctionne pour capter l'appui sur un bouton comme ceci :
SendDlgItemMessage(&H60744, 1234, BM_GETSTATE, 0&, 0&) '1234 étant l'ID du bouton et &H60744 le handle de la fenêtre.
Je ne sais pas par contre quels paramètres utiliser pour capter la souris ??
Autre méthode testée :
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Function startMouseHook() As Boolean
Dim hInstance As Long
hInstance = GetWindowLong(&H60744, GWL_HINSTANCE) '&H60744 est le handle de la fenêtre
mouse_Hook = SetWindowsHookEx(WH_MOUSE, AddressOf MouseProc, hInstance, ByVal 0&)
End Function
Public Function MouseProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If nCode = HC_ACTION Then
CopyMemory mouse_struct, ByVal lParam, LenB(mouse_struct)
Select Case wParam
Case WM_LBUTTONUP
Debug.Print "LButtonUp" & vbCrLf & "X=" & mouse_struct.pt.x & " ; Y=" & mouse_struct.pt.y
Case Else
End Select
End If
MouseProc = CallNextHookEx(mouse_Hook, nCode, wParam, lParam)
End Function
Le code au-dessus ne fonctionne pas lorsque j'utilise ma variable hInstance par contre il fonctionne dans la fenêtre hôte lorsque je remplace hInstance par App.hInstance.
Quelqu'un peut éclairer ma lanterne ? please......