OVH Cloud OVH Cloud

typename et projets activex

3 réponses
Avatar
Vincent Guichard
Bonjour!

Supposons 2 projets DLL ActveX (Proj1 et Proj2) exportant un objet de
meme nom (Class1). Je peux créer un objet du premier projet et utilisant:
Set obj1 = CreateObject("Proj1.Class1")
et un objet du second en utilisant
Set obj2 = CreateObject("Proj2.Class1")
Jusque là, tout va bien. Maintenant, si je veux afficher le type de
l'objet, je peux faire
Debug.Print TypeName(obj1)
et
Debug.Print TypeName(obj2)
mais les deux vont retourner "Class1".

Ma question est la suivante: y'a-t'il un moyen de savoir si un objet
"Class1" appartient à Proj1 ou Proj2?

Vincent Guichard

3 réponses

Avatar
François Picalausa
Hello,

Tu peux utiliser TypeOf.. mais alors pas de latebinding possible:

If TypeOf MonObjet Is Projet1.Class1 Then

Sinon, il est peut-être possible d'ajouter tes objets a une collection avec
leur progid (éventuellement comme clé)?

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Vincent Guichard" a écrit dans le message
de news:cbbc4h$53k$
Bonjour!

Supposons 2 projets DLL ActveX (Proj1 et Proj2) exportant un objet de
meme nom (Class1). Je peux créer un objet du premier projet et
utilisant: Set obj1 = CreateObject("Proj1.Class1")
et un objet du second en utilisant
Set obj2 = CreateObject("Proj2.Class1")
Jusque là, tout va bien. Maintenant, si je veux afficher le type de
l'objet, je peux faire
Debug.Print TypeName(obj1)
et
Debug.Print TypeName(obj2)
mais les deux vont retourner "Class1".

Ma question est la suivante: y'a-t'il un moyen de savoir si un objet
"Class1" appartient à Proj1 ou Proj2?

Vincent Guichard


Avatar
Vincent Guichard
François Picalausa a écrit :

Hello,

Tu peux utiliser TypeOf.. mais alors pas de latebinding possible:

If TypeOf MonObjet Is Projet1.Class1 Then



Non, le latebinding est requis, je crée les objets à partir d'une chaine
lue dans un fichier texte.

Sinon, il est peut-être possible d'ajouter tes objets a une collection avec
leur progid (éventuellement comme clé)?



Je pense que je vais plutôt ajouter une fonction dans leur interface
pour retourner leur type.

Vincent Guichard
Avatar
François Picalausa
Hello,

Sinon il devrait être possible de récupérer leur CLSID a partir des
objets... (API COM et ObjPtr? ou implémentation (typelib) d'une interface
COM?)...
A partir de là, soit tu pourrais travailler avec le CLSID soit le convertir
en progID (ProgIDFromCLSID)

Mais effectivement, il est plus simple de demander à l'objet de
s'identifier...
Mais si deux objets veulent s'identifier de la même façon....
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Vincent Guichard" a écrit dans le message
de news:cbbhas$7cl$
François Picalausa a écrit :

Hello,

Tu peux utiliser TypeOf.. mais alors pas de latebinding possible:

If TypeOf MonObjet Is Projet1.Class1 Then



Non, le latebinding est requis, je crée les objets à partir d'une
chaine lue dans un fichier texte.

Sinon, il est peut-être possible d'ajouter tes objets a une
collection avec leur progid (éventuellement comme clé)?



Je pense que je vais plutôt ajouter une fonction dans leur interface
pour retourner leur type.

Vincent Guichard