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

appel de procedure d'une DLL .NET

7 réponses
Avatar
Seb
bonjour,
est il possible d'appeler une dll .NET depuis VB? comment?
Merci
Seb

7 réponses

Avatar
Fran ois Picalausa
On 5$B7n(B22$BF|(B, $B8a8e(B12:19, "Seb" wrote:
bonjour,
est il possible d'appeler une dll .NET depuis VB? comment?
Merci
Seb



Hello,

Je ne suis pas sp cialiste du domaine, mais les ressources msdn sur le
sujet devraient pouvoir t'aider:
http://msdn2.microsoft.com/en-us/vbrun/ms788241.aspx
http://msdn2.microsoft.com/en-us/library/aa302324.aspx
http://support.microsoft.com/default.aspx?scid=%2Fservicedesks%2Fwebcasts%2Fen%2Fwc051602%2Fwct051602.asp

Fran ois Picalausa
Avatar
Fred
Dans : news:4652da64$0$27375$,
Seb disait :
bonjour,



Bonjour,

est il possible d'appeler une dll .NET depuis VB? comment?
Merci
Seb



Il y a un moyen très simple de le faire.
Il suffit d'exploser l'assembly .NET à COM.
Une case à cocher dans les propriétés du projet, onglet compilation, COM
interop.

Il est ensuite possible d'utiliser l'objet COM ainsi créé dans VB6, VBA
ou même un script vbs.

Un lien supplémentaire à ceux de François
http://msdn2.microsoft.com/en-us/library/aa719105(VS.71).aspx

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Avatar
Jean-marc
Fran ois Picalausa wrote:
On 5$B7n(B22$BF|(B, $B8a8e(B12:19, "Seb" wrote:
bonjour,
est il possible d'appeler une dll .NET depuis VB? comment?
Merci
Seb



Hello,

Je ne suis pas sp cialiste du domaine, mais les ressources msdn sur le
sujet devraient pouvoir t'aider:
http://msdn2.microsoft.com/en-us/vbrun/ms788241.aspx
http://msdn2.microsoft.com/en-us/library/aa302324.aspx
http://support.microsoft.com/default.aspx?scid=%2Fservicedesks%2Fwebcasts%2Fen%2Fwc051602%2Fwct051602.asp

Fran ois Picalausa



Hello!
En fait ca marche tres bien, j'utilise ca de temps en temps, par
contre je n'ai pas l'auto-completion ? Y aurait il une astuce que
je ne connais pas ?

Par exemple, j'ajoute une reference a mscorelib et je peux utiliser
les hashtable, comme ca:

Dim ht As Hashtable
Dim a As Long
Dim ret As Boolean

Set ht = New Hashtable
ht.Add "tutu", "toto"
a = ht.Count
ret = ht.containsKey("tutu")

Mais pas d'autocompletion pour ma variable ht :-(

J'ai aussi essaye avec:
Dim ht as New HashTable, mais c'est pareil.

Des idees ?

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
FAQ VB
"Jean-marc" wrote in message
news:4652eed7$0$13852$
Fran ois Picalausa wrote:
On 5/22 12:19, "Seb" wrote:
bonjour,
est il possible d'appeler une dll .NET depuis VB? comment?



Hello,

Je ne suis pas spécialiste du domaine, mais les ressources msdn sur le
sujet devraient pouvoir t'aider:
http://msdn2.microsoft.com/en-us/vbrun/ms788241.aspx
http://msdn2.microsoft.com/en-us/library/aa302324.aspx
http://support.microsoft.com/default.aspx?scid=%2Fservicedesks%2Fwebcasts%2Fen%2Fwc051602%2Fwct051602.asp

François Picalausa



Hello!
En fait ca marche tres bien, j'utilise ca de temps en temps, par
contre je n'ai pas l'auto-completion ? Y aurait il une astuce que
je ne connais pas ?

Par exemple, j'ajoute une reference a mscorelib et je peux utiliser
les hashtable, comme ca:

Dim ht As Hashtable
Dim a As Long
Dim ret As Boolean

Set ht = New Hashtable
ht.Add "tutu", "toto"
a = ht.Count
ret = ht.containsKey("tutu")

Mais pas d'autocompletion pour ma variable ht :-(

J'ai aussi essaye avec:
Dim ht as New HashTable, mais c'est pareil.

Des idees ?



Hello,

Ca semble dépendre de la typelib générée avec l'assembly utilisé. Je ne sais
pas comment générer/éditer ces typelibs de sorte à exposer les méthodes pour
un assembly existant, mais je sais que pour générer un wrapper dotnet
exposant ses méthodes à COM, les attributs
ClassInterface(ClassInterfaceType.None) ou
ClassInterface(ClassInterfaceType.Dual) sont utiles (voire nécessaire?).

L'article suivant décrit cela:
http://www.15seconds.com/issue/040721.htm

François
PS: Jean-Marc, FaqDOM expose ses méthodes à COM; si tu pousse les recherches
plus loin, ça pourrait éventuellement t'être utile...
Avatar
Jean-marc
FAQ VB wrote:
"Jean-marc" wrote in message



Mais pas d'autocompletion pour ma variable ht :-(

J'ai aussi essaye avec:
Dim ht as New HashTable, mais c'est pareil.

Des idees ?



Hello,



Hello !

Ca semble dépendre de la typelib générée avec l'assembly utilisé. Je
ne sais pas comment générer/éditer ces typelibs de sorte à exposer
les méthodes pour un assembly existant, mais je sais que pour générer
un wrapper dotnet exposant ses méthodes à COM, les attributs
ClassInterface(ClassInterfaceType.None) ou
ClassInterface(ClassInterfaceType.Dual) sont utiles (voire
nécessaire?).
L'article suivant décrit cela:
http://www.15seconds.com/issue/040721.htm



Cool, je vais aller voir ça, merci!

PS: Jean-Marc, FaqDOM expose ses méthodes à COM; si tu pousse les
recherches plus loin, ça pourrait éventuellement t'être utile...



Oki, on fera d'une pierre 2 coups ...

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
Seb
bonjour,
donc j'ai créé un assemblage .NET COM , par contre, ensuite, je n'arrive
pas a utiliser l'objet COM en VB6 ou VBA(je prefererai le faire depuis le
VBA mais je peux egalement le faire en VB6)
Quelqu'un peut il me donner un exemple d'acces a ma dll

ma dll test represente l'objet com. Elle a une classe CClass_test a
l'interieur avec une methode ouvreFenetre()

ou dois je mettre ma dll pour que le VBA (ou VB) la trouve? Il m'est
impossible de la referencer ni de faire un regsvr32 dessus
la focntion createObject("test1.CClass_test") me renvoie un message d'erreur
me disant : "Erreur d'execution '429': un composant ActiveX ne peut pas
créer d'objet"

quelqu'un peut il m'aider ou me mettre sur une piste?
Merci


"Fred" a écrit dans le message de news:

Dans : news:4652da64$0$27375$,
Seb disait :
bonjour,



Bonjour,

est il possible d'appeler une dll .NET depuis VB? comment?
Merci
Seb



Il y a un moyen très simple de le faire.
Il suffit d'exploser l'assembly .NET à COM.
Une case à cocher dans les propriétés du projet, onglet compilation, COM
interop.

Il est ensuite possible d'utiliser l'objet COM ainsi créé dans VB6, VBA ou
même un script vbs.

Un lien supplémentaire à ceux de François
http://msdn2.microsoft.com/en-us/library/aa719105(VS.71).aspx

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)


Avatar
Fred
Dans : news:46540e8d$0$27410$,
Seb disait :
bonjour,



Bonjour,

donc j'ai créé un assemblage .NET COM , par contre, ensuite, je
n'arrive pas a utiliser l'objet COM en VB6 ou VBA(je prefererai le
faire depuis le VBA mais je peux egalement le faire en VB6)
Quelqu'un peut il me donner un exemple d'acces a ma dll

ma dll test represente l'objet com. Elle a une classe CClass_test a
l'interieur avec une methode ouvreFenetre()

ou dois je mettre ma dll pour que le VBA (ou VB) la trouve?



Si tu testes sur le poste qui a servi à developper la dll, elle est
automatiquement enregistrée et est visible dans l'explorateur d'objets
de VB6 (ou VBA).

Sinon, le plus simple est peut-être de faire un projet de setup qui
réalisera toutes les opérations nécessaires à son enregistrement lors du
déploiement.



la focntion createObject("test1.CClass_test") me renvoie un message
d'erreur me disant : "Erreur d'execution '429': un composant ActiveX
ne peut pas créer d'objet"



À mon avis, tu as peut-être une erreur dans ta dll .NET.
Les erreurs ne sont pas renvoyées correctement me semble-t-il.
Essaie de tracer l'exécution de ta dll, ou utilise des blocs try catch
pour que la dll affiche elle-même les éventuels messages d'erreur.

À priori, la méthode est fiable. Je l'ai utilisée sur un developpement
vb6 avant migration complète en .NET.


--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)