OVH Cloud OVH Cloud

comment utiliser une dll activex pour c++?

13 réponses
Avatar
dark poulpo
lu,

1) quelqu'un sait comment ouvrir/utiliser dynamiquement une dll activex
(crée sous vb) sur vc++?
2) quelqun connait un miyen pour savoir si une dll est une activex ou une
simple dll (sans essayer de l'ouvrir par la question 1)

merci

--
-----
http://dark.freezee.org/
http://www.dark-team.cjb.net/

10 réponses

1 2
Avatar
Vincent Burel
"dark poulpo" wrote in message
news:4271e5b1$0$11701$
lu,

1) quelqu'un sait comment ouvrir/utiliser dynamiquement une dll activex
(crée sous vb) sur vc++?



par sont CLSID ou GUID.
à l'aides des fonction OLE comme CoCreateInstance par exemple

2) quelqun connait un miyen pour savoir si une dll est une activex ou une
simple dll (sans essayer de l'ouvrir par la question 1)



une DLL activex exporte 4 fonctions normallement :

DLLCanUnloadNow
DLLGetClassObject
DLLRegisterServer
DLLUnregisterSErver

de plus elle est référencée dans la base de registre par son CLSID.

VB
Avatar
dark poulpo
et si je connais pas son CLSID ou GUID, quand je dit chargement dynamique,
je connais juste son nom de dll , les fonctions a linterrieurs, la classe,
mais c tout

je me vois pas scanner les clés de la base de reg pour connaitre son id

--
-----
http://dark.freezee.org/
http://www.dark-team.cjb.net/
Avatar
dark poulpo
par contre jai trouvé ca , ca tue

http://www.cppfrance.com/code.aspx?id)171

--
-----
http://dark.freezee.org/
http://www.dark-team.cjb.net/
Avatar
dark poulpo
CLSIDFromProgID() jai trouvé, merci
--
-----
http://dark.freezee.org/
http://www.dark-team.cjb.net/
Avatar
Vincent Burel
"dark poulpo" wrote in message
news:4271f029$0$11694$
et si je connais pas son CLSID ou GUID, quand je dit chargement dynamique,
je connais juste son nom de dll , les fonctions a linterrieurs, la classe,
mais c tout



Normallement, il faut connaitre les CLSID et GUID de ce que vous voulez
utiliser... C'est la base des objet COM.

je me vois pas scanner les clés de la base de reg pour connaitre son id



pourquoi !? la clef CLASS_ROOT // CLSID est là pour ca ! pour se faire
scanner.

VB
Avatar
Vincent Burel
"dark poulpo" wrote in message
news:4271f0bd$0$809$
par contre jai trouvé ca , ca tue

http://www.cppfrance.com/code.aspx?id)171



très jolie !
celui la est pas mal non plus :
http://www.cppfrance.com/code.aspx?id1029
Avatar
Aurélien REGAT-BARREL
dark poulpo wrote:
par contre jai trouvé ca , ca tue

http://www.cppfrance.com/code.aspx?id)171



"On m'a déja dit qu'il faut être maso pour réaliser un conteneur Activex
sans faire appel aux MFC ou ATL. Eh bien, ce n'est plus le cas"
[...]
"Comme vous le voyez, tout le secret réside dans l'utilisation de la
fonction "AtlAxAttachControl" contenue dans "atl.dll"."

Elle est où la tuerie ?
Du code de bourrin sans ATL on a donné des liens ici y'a pas très longtemps
(dont un sur cppfrance). ActiveX y est bien décortiqué.

2) quelqun connait un miyen pour savoir si une dll est une activex ou une
simple dll (sans essayer de l'ouvrir par la question 1)



Ce que t'a donné Vincent permet de savoir qi ta dll est un composant COM. Il
me semble qu'un ActiveX doit en plus obligatoirement fournir un tlb, donc
peut être que même si ta dll n'est pas enregistrée dans la BDR, tu peux
"jouer" avec ITypeLib via LoadTypeLib.
http://www.codeguru.com/Cpp/COM-Tech/activex/misc/article.php/c2569/
En étudiant les CoClass exportée (IOleObject, ...), tu pourras déterminer si
c'est ou non un ActiveX.
http://msdn.microsoft.com/workshop/components/activex/intro.asp

--
Aurélien REGAT-BARREL
Avatar
Christian ASTOR
dark poulpo wrote:
par contre jai trouvé ca , ca tue

http://www.cppfrance.com/code.aspx?id)171



Mais c'est un peu bidon... (euphémisme)
5 mois pour en arriver là, hum...
Si on utilise ATL, autant faire encore plus simple avec AtlAxWinInit()
Qu'on appelle dynamiquement ou classiquement (KB192560)
Il n'y a alors même pas besoin de CoCreateInstance() et Cie...
Donc ce n'est pas du tout "100% API" (genre KB189634, ce qui est une
autre paire de manches...)
Avatar
dark poulpo
pour moi ca tue,comparé a ce que jai trouvé jusque la, parceque c simple,
clair, et pas enfui dans 100 lignes de code, ce qui plait a quelqu'un ne
plait pas forcement a un autre, tout est relatif.

pour savoir si c un activex, je fais un getprocaddress() d'une des fonctions
données par V.B



--
-----
http://dark.freezee.org/
http://www.dark-team.cjb.net/
Avatar
Christian ASTOR
dark poulpo wrote:

pour moi ca tue,comparé a ce que jai trouvé jusque la, parceque c simple,
clair,



Mais non, ça ne tue rien du tout.
Comme a dit Aurélien, c'est ATL qui fait tout.
5 Mois pour faire un GetProcAddress() sur ATL.DLL et dire qu'on
n'utilise pas ATL et croire qu'on vient de découvrir le feu,
c'est surtout grand-guignolesque...
1 2