APPELLER UNE DLL DYNAMIQUEMENT (DANS LE CODE)

frank150 Messages postés 34 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 29 mars 2008 - 23 janv. 2006 à 08:26
EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 - 7 déc. 2011 à 16:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35700-appeller-une-dll-dynamiquement-dans-le-code

EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 2
7 déc. 2011 à 16:02
Par contre, juste une question. Quand on fait appel à une dll, elle est instancié, mais comment la dés-instancie-t'on? En effet, une fois la fonction utilisée, la dll est toujours "utilisé" par l'application maîtresse (il suffit d'essayer de la supprimer une fois que votre fonction a été exécutée pour voir que ce n'est pas possible et que la dll est toujours instancié). Donc grossièrement, comment libère-t-on la dll?
EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 2
7 déc. 2011 à 10:50
Ce code fonctionne très bien, par contre, une fois la fonction utilisé, la dll reste instancé.
J'ai crée une dll avec un "sub new", ainsi que les fonctions que j'appelle.
Lorsque j'appelle ma fonction, la dll est instancé, le sub new est appelé puis la fonction. Mais une fois la fonction utilisé, la dll reste instancié et je ne sais pas comment la "libérer" (si vous essayer d'appeler votre fonction, une fois terminée, vous ne pouvez pas supprimer la dll tant que le programme principal qui l'a appelé est encore ouvert).

Savez-vous comment faire?
EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 2
17 janv. 2011 à 14:48
Avec le commentaire de LTourist en plus, cette source fait parfaitement son travail, et ça fonctionne à merveille.

Merci à vous deux ;)
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
16 août 2010 à 09:18
Bonjour, est il possible d'appeler une dll système de Windows ?
viarn Messages postés 33 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 21 février 2006
21 juin 2006 à 22:14
Ca c'est sur, il y a de l'amour dans l'air....
Si un jour tu reviens pense à nous !!!
frank150 Messages postés 34 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 29 mars 2008
21 juin 2006 à 07:32
bonjour les gars!

bon dsl de mon absence mais présentement jpense plus vraiment a coder ni meme en vb6 ou .NET
jsais pas pourquoi mais jy ai perdu gout.

en tk, j'espere p-e y reprendre gout un jour mais pour l'instant.

Bonne chance à vous et à VBFrance
LTourist Messages postés 24 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 8 février 2009
20 juin 2006 à 16:01
J'ai trouvé comment faire pour appeler une methode qui se trouve dans une classe, en me basant sur d'autre source, ça serait intéressant si tu pouvais rajouter ceci dans la tienne :) :

Dim MyAssembly As Assembly = Assembly.LoadFrom(Filename) 'Load la dll
Dim MyType As Type = MyAssembly.GetType(MyAssemblyName & "." & ModuleName) 'Trouve le bon module
Dim MyMethod As MethodInfo = MyType.GetMethod(Method) 'Trouve la méthode
Dim MyObject As Object = Activator.CreateInstance(MyType) 'Crée une instance de la classe
Return MyMethod.Invoke(MyObject, Param) 'Appelle la méthode

Et pour ceux qui n'auraient pas encore bien compris le principe, le moyen d'appeler une propriété :

Dim MyAssembly As Assembly = Assembly.LoadFrom(Filename) 'Load la dll
Dim MyType As Type = MyAssembly.GetType(MyAssemblyName & "." & ModuleName) 'Trouve le bon module
Dim MyProp As PropertyInfo = MyType.GetProperty(Method) 'Trouve la propriété
Dim MyObject As Object = Activator.CreateInstance(MyType) 'Crée une instance de l'objet
Return MyProp.GetValue(MyObject, Param) 'Appele la propriété et on retourne sa valeur

Voila merci beaucoup et je mets une exellente note a cette source qui m'a permis un grand bon en avant :D

Je me permets egalement de faire de la pub pour cette autre source qui permet de trouver toutes les methodes etc d'une classe (je trouve que les deux sources se completent), j'espere que tu ne m'en voudra pas :)

http://www.vbfrance.com/codes/ALLOCATION-DYNAMIQUE-DLL-VB-NET-METHODES-SYSTEM-REFLECTION_35496.aspx

Voila merci encore ++ :D
LTourist Messages postés 24 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 8 février 2009
20 juin 2006 à 15:35
Cette source est tres interressante, cependant j'ai un gros probleme avec...Impossible d'appeler des fonctions se trouvant dans des Class, pourquoi? Pourquoi devoir obligatoirement passer par des modules? C'est dommage car je fais un systeme de plugin avec une interface, et on ne peut pas utiliser implements dans les modules, donc je suis bloqué... Si tu pouvais m'aider merci :)
Et aussi ou sont les fonctions que tu a rajouté? je ne les vois pas...
Merci ;)
benhassanovich Messages postés 1 Date d'inscription samedi 3 juin 2006 Statut Membre Dernière intervention 6 juin 2006
6 juin 2006 à 13:21
moi j'ai un tout autre pb. j'aimerais créer une dll avec VB6 que je pourrais utiliser en vb.net
coment faire?
Zylott Messages postés 104 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 28 septembre 2006
30 mai 2006 à 16:17
Bonjour,
Idem
je n'utilise pas VB.NET mais VB6 ...
est-il possible de faire la meme chose en vb6 (appel dynamique d'une DLL) ?
ou puis-je trouver la source si elle existe ?
D'avance merci.
viarn Messages postés 33 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 21 février 2006
19 févr. 2006 à 20:17
Salut, je viens de trouver ton code qui à l'ai très intéressant. Cependant je n'est pas VB.NET alors est-ce que ta source existe en vb6 ?

Bon courage

A+ vincent
frank150 Messages postés 34 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 29 mars 2008
23 janv. 2006 à 08:26
Je suis entrain de faire un exemple que je posterai probablement demain.

J'en ai profiter pour rajouter quelques fonctions:

- Lister les objets d'un fichier (classe/form/module/etc..)
- Lister les méthodes public associés à l'objet (fonction/sub/property)
- Lister les paramètres de l'objet si il y en a
- Retourne le type de donnée qu'une fonction renvoie
- On peut appeler les fonctions avec seulement le nom du fichier
(il le cherche dans le dossier du programme)

Avec ces fonctions rajoutés, sa ressemble plus à un décompilateur mais bon :)
Ps.: Sa fonctionne seulement avec des fichiers compilés VB.Net
Rejoignez-nous