EvilGost
Messages postés235Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 mai 20112 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és235Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 mai 20112 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és235Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 mai 20112 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és227Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention26 avril 2012 16 août 2010 à 09:18
Bonjour, est il possible d'appeler une dll système de Windows ?
viarn
Messages postés33Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention21 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és34Date d'inscriptionlundi 6 janvier 2003StatutMembreDernière intervention29 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és24Date d'inscriptionjeudi 22 décembre 2005StatutMembreDerniè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 :)
LTourist
Messages postés24Date d'inscriptionjeudi 22 décembre 2005StatutMembreDerniè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és1Date d'inscriptionsamedi 3 juin 2006StatutMembreDerniè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és104Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention28 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és33Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention21 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és34Date d'inscriptionlundi 6 janvier 2003StatutMembreDernière intervention29 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
7 déc. 2011 à 16:02
7 déc. 2011 à 10:50
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?
17 janv. 2011 à 14:48
Merci à vous deux ;)
16 août 2010 à 09:18
21 juin 2006 à 22:14
Si un jour tu reviens pense à nous !!!
21 juin 2006 à 07:32
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
20 juin 2006 à 16:01
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
20 juin 2006 à 15:35
Et aussi ou sont les fonctions que tu a rajouté? je ne les vois pas...
Merci ;)
6 juin 2006 à 13:21
coment faire?
30 mai 2006 à 16:17
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.
19 févr. 2006 à 20:17
Bon courage
A+ vincent
23 janv. 2006 à 08:26
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