En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies pour vous proposer des contenus et services adaptés. Mentions légales.

Recherche

Recherche

Les mémos

Je débute...

Visites

 1218296 visiteurs

 5 visiteurs en ligne

Nous contacter

Contact

AdressOf pour A97

AdressOf retrourne le pointeur d'une variable

Apparue avec Access 2000, il faut utiliser la fonction ci-dessous en cas d'utilisation de Access 97

Option Compare Database
Option Explicit
'/
'/ A placer dans la partie déclarative
'/
'
'/ AdrOF [ pour ACC97 - utilise vba332.dll ]
'
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

La fonction :

Private Function AddrOf(strFuncName As String) As Long
    ' Function AddrOf
    '
    ' Parameters: strFuncName : String with the Name of Function
    ' Description: Returns a function pointer of a VBA private function given its name. This function
    ' gives similar functionality to VBA as VB5 has with the AddressOf param type.
    '
    ' NOTE: This function only seems to work if the proc you are trying to get a pointer
    ' to is in the current project. This makes sense, since we are using a function
    ' named EbGetExecutingProj.
    Dim hProject As Long
    Dim lngResult As Long
    Dim strID As String
    Dim lpfn As Long
    Dim strFuncNameUnicode As String
    Const NO_ERROR = 0

    ' The function name must be in Unicode, so convert it.
    strFuncNameUnicode = StrConv(strFuncName, vbUnicode)
    ' Get the current VBA project
    ' The results of GetCurrentVBAProject seemed inconsistent, in our tests,
    ' so now we just check the project handle when the function returns.
    Call GetCurrentVbaProject(hProject)
    ' Make sure we got a project handle... we always should, but you never know!
    If hProject <> 0 Then
        ' Get the VBA function ID (whatever that is!)
        lngResult = GetFuncID(hProject, strFuncNameUnicode, strID)
        ' We have to check this because we GPF if we try to get a function pointer
        ' of a non-existent function.
        If lngResult = NO_ERROR Then
            ' Get the function pointer.
            lngResult = GetAddr(hProject, strID, lpfn)
            If lngResult = NO_ERROR Then
                AddrOf = lpfn
            End If
        End If
    End If
End Function


Catégorie : Les mémos - Vrac
Page lue 6256 fois

Vous êtes ici :   Accueil » AdressOf pour A97