Soyez le premier à donner votre avis sur cette source.
Snippet vu 15 638 fois - Téléchargée 32 fois
'Pour créer une dll vb.net compatible: '===================================== ' ' Créer un nouveau projet 'Class Library' (je l'ai en anglais dsl) ' Ajouter un module (renommez comme bon vous semble) ' Ajouter votre fonction dans le module et compiler la dll ' ' Ps.: La classe que vb.net a créer ne doit pas etre effacer mais elle peut rester vierge. ' Vous pouvez aussi utiliser la classe pour que la dll soit aussi référencable. ' ' 'Exemple de projet Class Library (compilé 'MaDll.dll'): '====================================================== ' ' Contient 1 classe nommé 'MaClasse' ' Contient 1 module nommé 'MonModule' ' ' Dans le module: ' ' Public Function Additionner(Byval Number1 As Long, Byval Number2 As Long) As Long ' ' Return Number1 + Number2 ' ' End Function ' ' Public Function MessageBox(Byval MonTitre As String, Byval MonMessage As String) As Object ' ' MsgBox(MonMessage, , MonTitre) ' ' End Function ' 'Exemple pour l'utiliser (un projet normal): '=========================================== ' ' Pour appeler la fonction Additionner: ' ------------------------------------- ' ' Dim MesParams(1) As Object ' ' MesParams(0) = 10 ' MesParams(1) = 5 ' ' MsgBox(CallDll("MaDll.dll", "MonModule", "Additionner", MesParams) 'Retourne 15 ' ' ' Pour appeler la fonction MessageBox: ' ------------------------------------- ' ' Dim MesParams(1) As Object ' ' MesParams(0) = "MonTitre" ' MesParams(1) = "MonMessage" ' ' CallDll("MaDll.dll", "MonModule", "MessageBox", MesParams) 'Affiche un MsgBox (Titre="MonTitre", Message="MonMessage") ' '====================================================================================== 'Le code ci-dessous est à placer dans un module de votre projet qui va accéder a la dll Imports System.Reflection Function CallDll(ByVal Filename As String, ByVal [Module] As String, ByVal Method As String, ByVal Param() As Object) As Object Try 'Essaie d'appeller la dll Dim MyAssembly As Assembly = Assembly.LoadFrom(Filename)'Load la dll Dim MyAssemblyName As String = Left(MyAssembly.FullName, InStr(MyAssembly.FullName, ",") - 1) 'Trouve le nom du projet Dim MyType As Type = MyAssembly.GetType(MyAssemblyName & "." & [Module]) 'Trouve le bon module Dim MyMethod As MethodInfo = MyType.GetMethod(Method) 'Trouve la méthode Return MyMethod.Invoke(MyMethod, Param) 'On appelle la méthode et on retourne sa valeur Catch 'La dll/module/méthode n'a pas été trouver, on ne retourne rien Return Nothing End Try End Function
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?
Merci à vous deux ;)
Si un jour tu reviens pense à nous !!!
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.