#If VBA7 Then
    #If Win64 Then
        Private Declare PtrSafe Function AccessibleObjectFromPoint Lib "Oleacc" (ByVal arg1 As LongPtr, ppacc As IAccessible, pvarChild As Variant) As Long
        Private Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As LongPtr)
    #Else
        Private Declare PtrSafe Function AccessibleObjectFromPoint Lib "Oleacc" (ByVal lX As Long, ByVal lY As Long, ppacc As IAccessible, pvarChild As Variant) As Long
    #End If
#Else
    Private Declare Function AccessibleObjectFromPoint Lib "Oleacc" (ByVal lX As Long, ByVal lY As Long, ppacc As IAccessible, pvarChild As Variant) As Long
#End If
Private Type POINTAPI
    X As Long
    Y As Long
End Type
#If Win64 Then
    ' Copies a POINTAPI into a LongLong.  For an API requiring a ByVal POINTAPI parameter,
    ' this LongLong can be passed in instead.  Example API's include WindowFromPoint,
    ' ChildWindowFromPoint, ChildWindowFromPointEx, DragDetect, and MenuItemFromPoint.
    Function PointToLongLong(Point As POINTAPI) As LongLong
        Dim ll As LongLong
        Dim cbLongLong As LongPtr
     
        cbLongLong = LenB(ll)
     
        ' make sure the contents will fit
        If LenB(Point) = cbLongLong Then
            CopyMemory ll, Point, cbLongLong
        End If
     
        PointToLongLong = ll
    End Function
#End If
'----------------------------------------
'Utilisation de AccessibleObjectFromPoint
'----------------------------------------
Sub a()
    Dim Pt As POINTAPI
    Dim IA As IAccessible
    Dim V As Variant
 
    GetCursorPos Pt
 
    #If Win64 Then
        lResult = AccessibleObjectFromPoint(PointToLongLong(Pt), IA, V)
    #Else
        lResult = AccessibleObjectFromPoint(Pt.X, Pt.Y, IA, V)
    #End If
End Sub