Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Appel Procedure dans un module à partir du DLL

9 réponses
Avatar
West972
Salut à tous
Mon probleme est le suivant, j'ai une dll Activex ou j'aimerai faire un
appel à une procedure qui se trouve dans un projet principal.Comment puis je
réaliser cela
D'avance merci

9 réponses

Avatar
SAISAS
Est-ce que l'instruction DECLARE ne serait pas la solution?

"West972" a écrit :

Salut à tous
Mon probleme est le suivant, j'ai une dll Activex ou j'aimerai faire un
appel à une procedure qui se trouve dans un projet principal.Comment puis je
réaliser cela
D'avance merci


Avatar
West972
Merci d'avoir pris le temps de me repondre.
Je ne cherche pas à appeler une procedure qui se trouverait dans une DLL,
mais plutot une procedure qui se trouve dans mon programme principale
exemple... dans le le module principal de mon projet j'ai une procedure
TOTO(), donc dans le code de ma DLL je veux appeler TOTO... est ce realisable
d'apres vous.
Merci...

"SAISAS" a écrit :

Est-ce que l'instruction DECLARE ne serait pas la solution?

"West972" a écrit :

> Salut à tous
> Mon probleme est le suivant, j'ai une dll Activex ou j'aimerai faire un
> appel à une procedure qui se trouve dans un projet principal.Comment puis je
> réaliser cela
> D'avance merci


Avatar
Vincent Guichard
West972 a écrit :
Merci d'avoir pris le temps de me repondre.
Je ne cherche pas à appeler une procedure qui se trouverait dans une DLL,
mais plutot une procedure qui se trouve dans mon programme principale
exemple... dans le le module principal de mon projet j'ai une procedure
TOTO(), donc dans le code de ma DLL je veux appeler TOTO... est ce realisable
d'apres vous.
Merci...




C'est faisable plus ou moins facilement. Il y a plusieurs solution.
L'une d'entre elles est d'utiliser le mécanisme des callback, c'est à
dire que ta dll aura une méthode RegisterFunction appelée par le module
principal avec en argument l'adresse de la procedure à appeler. Dans le
code de ton module tu devra faire un appel à :
RegisterFunction AddressOf fonction
avant que la dll puisse utiliser la fonction. Dans le code de la dll, il
faudra que tu mémorises la valeur du pointeur passé à RegisterFunction.

Vincent Guichard
Avatar
West972
Merci Vincent...
Je vais essayer de ce pas ta solution.
Avatar
Vincent Guichard
West972 a écrit :
Merci Vincent...
Je vais essayer de ce pas ta solution.



Attention qu'il n'existe pas à ma connaissance de moyen d'appeller une
fonction par adresse en vb6. Il faut donc que ta DLL ActiveX soit codée
dans un langage qui le permet.

Vincent Guichard
Avatar
West972
Donc il n'ya pas de solution à mon probleme dans ce cas vu que ma DLL ActiveX
est faite en VB :'(

"Vincent Guichard" a écrit :

West972 a écrit :
> Merci Vincent...
> Je vais essayer de ce pas ta solution.
>
Attention qu'il n'existe pas à ma connaissance de moyen d'appeller une
fonction par adresse en vb6. Il faut donc que ta DLL ActiveX soit codée
dans un langage qui le permet.

Vincent Guichard



Avatar
SAISAS
Effectivement, réponse rapide, et en plus DECLARE ne permet que de faire
appel aux fonctions du système ...

Solution proposée : faire appel à la fonction CallByName

Manière de procéder (exemple)

Dans un form de ton programme principal, tu décris une proécudre public,
avec ton code. Tu passes à ta dll ton objet form, puis dans ta dll tu
utilises l'appel suivant :

CallByName monForm, "Maproc", vbMethod, ... 'mes arguments

Je n'ai pas essayé dans ton cas, mais cela marche dans un projet en vb.

J'attends avec impatience les résultats ...

Cordialement.

"West972" a écrit :

Merci d'avoir pris le temps de me repondre.
Je ne cherche pas à appeler une procedure qui se trouverait dans une DLL,
mais plutot une procedure qui se trouve dans mon programme principale
exemple... dans le le module principal de mon projet j'ai une procedure
TOTO(), donc dans le code de ma DLL je veux appeler TOTO... est ce realisable
d'apres vous.
Merci...

"SAISAS" a écrit :

> Est-ce que l'instruction DECLARE ne serait pas la solution?
>
> "West972" a écrit :
>
> > Salut à tous
> > Mon probleme est le suivant, j'ai une dll Activex ou j'aimerai faire un
> > appel à une procedure qui se trouve dans un projet principal.Comment puis je
> > réaliser cela
> > D'avance merci


Avatar
Vincent Guichard
West972 a écrit :
Donc il n'ya pas de solution à mon probleme dans ce cas vu que ma DLL ActiveX
est faite en VB :'(



Si, il faut que ton projet soit un projet Exe ActiveX. Tu mets les
fonctions que tu veux appeler dans un module de classe, tu crée une
instance de la classe en question et tu la passe par référence à ta dll.
Tu peux alors appeler les méthodes de la classe depuis ta dll.

Vincent Guichard
Avatar
West972
Ta solution correspond tout à fait à ce que je voulais :) ca marche même avec
une DLL fait en VB.
Merci SAISAS