IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

utiliser CallWindowProc pour appeler une fonction


Sujet :

VBA Access

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut utiliser CallWindowProc pour appeler une fonction
    Bonjour,
    je dois utiliser une fonction de dll qu'il n'est pas possible d'enregistrer dans les références (défaut)
    j'tilise donc loadlibrary
    et j'appele CallWindowProc le problème est que je ne sais pas utiliser la fonction avec des arguments.

    merci de me donner des conseils.

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    salut,

    Citation Envoyé par cbleas Voir le message
    [...]
    j'tilise donc loadlibrary
    et j'appele CallWindowProc [...]
    tu ne peux pas déclarer la fonction avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Declare Function mafonction lib "malibrairie.dll" (byval pParam as long)

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    Bonjour Arkam46

    tu ne peux pas déclarer la fonction avec :

    Code :

    Declare Function mafonction lib "malibrairie.dll" (byval pParam as long)
    Qu'est ce qu'on peut faire pour déclarer la fonction de façon dynamique?

    Merci

  4. #4
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Citation Envoyé par cbleas Voir le message
    Qu'est ce qu'on peut faire pour déclarer la fonction de façon dynamique?
    ça veut dire quoi dynamique??
    le nom de la fonction est variable, ou bien ses arguments?

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 637
    Points : 34 342
    Points
    34 342
    Par défaut
    salut,
    Arkham46, je crois que cbleas n'a pas remarqué ton en dessous de ton exemple.

    Le code fourni est à mettre en début de tes modules.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    Bonjour,
    désolé pour ce retard. comme le disait jpcheck je n'avais pas vu ?
    sinon je met le code.
    j'essai de référencer dynamiquement une fonction d'une DLL car je n'arrive pas à la mettre en référence dans le VBA.
    Le code que j'utilise est
    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
    Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" _
    (ByVal lpLibFileName As String) As Long
     
    Public Declare Function FreeLibrary Lib "kernel32" _
    (ByVal hLibModule As Long) As Long
     
    Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As _
    Long, ByVal lpProcName As String) As Long
     
    Public Declare Function printForm Lib "C:\Program Files\FMS\FormMaker\bin\FmsFormMakerDll.dll" (ByVal xmlFileIn As String, ByVal pdfFileIn As String, ByVal numberOfCopies As Integer) As String
     
     
     
     
    ''permet de mettre les fonction de Anoto
    Function ChargementDll()
     
        On Error Resume Next
        Dim X As Long
        Dim Y As Long
     
        X = LoadLibrary("C:\Program Files\FMS\FormMaker\bin\FmsFormMakerDll.dll")
     
        Y = GetProcAddress(X, "printForm")
     
        a = printForm("C:\Documents and Settings\Christian\Bureau\ANOTO\278.xml", "C:\Documents and Settings\Christian\Bureau\ANOTO\278-06.pdf", 1)
     
        FreeLibrary X
     
     
    End Function


    Vous remarquerez que ce n'est plus CallWindowProc mais printForm
    dès que j'appelle cette fonction ACCESS Plante.

    est ce due à la facon de faire ou au fait que la Dll ne soit pas compatible avec VBA?

    pour ce qui est du référencement dynamique c'est des appel à des fonction externe et à la libération des ressource (d'après ce que j'ai compris)

    Merci

  7. #7
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Si tu utilises loadlibrary, il n'est pas nécessaire de mettre le chemin complet dans la déclaration (sinon on y perd de l'intérêt)

    Mais ça ne résous pas le problème.
    Sans connaître la dll c'est pas facile.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    Bonjour,
    On connait la dll mais il est impossible de l'intégrer dans les références.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/05/2008, 08h51
  2. Utiliser Createprocess pour lancer une fonction
    Par lolita4882 dans le forum C++
    Réponses: 3
    Dernier message: 14/03/2008, 12h01
  3. Utiliser une touche pour appeller une fonction
    Par Hide dans le forum Langage
    Réponses: 2
    Dernier message: 13/10/2005, 16h59
  4. Réponses: 7
    Dernier message: 10/09/2005, 16h49
  5. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo