Compléments pour Microsoft Access

http://access.fr.free.fr/

Fonction fAddressOf (Equivalence)

Description 

Opérateur unaire provoquant la transmission de l'adresse de la procédure qu'il précède à une procédure API attendant un pointeur de fonction à cette position dans la liste d'arguments.

Cette fonction est disponible uniquement à partir de la version Access 2000. Le code qui suit permet donc de contourner le problème pour les utilisateurs d'Office 97 qui sont amenés à utiliser des API qui font appelle à cette fonction.

 
Syntaxe 

fAddressOf (strFuncName)

La syntaxe de la fonction fAddressOf comprend l'élément suivant :

ElémentsDescription
strFuncNameL'argument strFuncName indique la procédure dont l'adresse va être passée. il doit désigner une procédure figurant dans un module standard de l'application dans laquelle l'appel est effectué.
 
Exemple 

Aucun exemple disponible pour le moment.

 
Code de la fonction 


'** Déclaration API pour reproduire fonction AddressOf
Private Declare Function GetCurrentVbaProject _
    Lib "vba332.dll" Alias "EbGetExecutingProj" _
    (hProject As Long) As Long

Private Declare Function GetFuncID _
    Lib "vba332.dll" Alias "TipGetFunctionId" _
    (ByVal hProject As Long, ByVal strFunctionName As String, _
    ByRef strFunctionId As String) As Long

Private Declare Function GetAddr _
    Lib "vba332.dll" Alias "TipGetLpfnOfFunctionId" _
    (ByVal hProject As Long, ByVal strFunctionId As String, _
    ByRef lpfn As Long) As Long

Public Function fAddressOf(strFuncName As String) As Long

Dim hProject As Long
Dim lngResult As Long
Dim strID As String
Dim lpfn As Long
Dim strFuncNameUnicode As String

Const NO_ERROR = 0
strFuncNameUnicode = StrConv(strFuncName, vbUnicode)
Call GetCurrentVbaProject(hProject)
If hProject <> 0 Then
    lngResult = GetFuncID( _
         hProject, strFuncNameUnicode, strID)
    If lngResult = NO_ERROR Then
        lngResult = GetAddr(hProject, strID, lpfn)
        If lngResult = NO_ERROR Then
            fAddressOf = lpfn
        End If
    End If
End If

End Function