Vérifier enregistrement DLL - C++ - Programmation
Marsh Posté le 07-05-2010 à 09:35:08
Déjà, il te faut le GUID de la dll, car toute dll COM possède un GUID (les chiffres au format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Pour rechercher ce GUID, si tu n'as pas la doc de la dll, alors tu dois faire une recherche dans la base de registres sur le chemin complet de ta dll. Le GUID y sera indiqué.
Une fois que tu as le GUID, appelle la fonction CoCreateInstance sur ce GUID. Si la fonction te renvoie S_OK, alors la création de l'objet COM s'est déroulée correctement, ceci signifiant donc que la dll est enregistrée.
Marsh Posté le 07-05-2010 à 09:38:17
J'ai le GUID. Je vais tester CoCreateInstance alors. Merci.
Marsh Posté le 07-05-2010 à 10:28:07
Je n'arrive pas bien à l'utiliser.
Je n'ai besoin de renseigner que le CLSID non ?
J'ai fait ça :
Code :
|
Mais ça ne me retourne pas S_OK alors que l'ID est bonne.
Marsh Posté le 07-05-2010 à 11:08:35
Deamon a écrit :
|
Bonjour,
Je ne saurais t'indiquer le bon code, mais il est interessant d'analyser la valeur de retour de cocreateinstance, et non de juste la comparer a S_OK car la tu ne sais pas pourquoi cela ne s'est pas bien passé!
http://msdn.microsoft.com/en-us/li [...] 85%29.aspx
Marsh Posté le 07-05-2010 à 17:41:06
ReplyMarsh Posté le 07-05-2010 à 19:35:39
breizhbugs a écrit :
|
J'avais un nombre du genre -24217328, je n'ai pas retenu la valeur.
Trap D a écrit : Il'y a pas des histoires d'installation de la dll avec un regsvr32 parfois ? |
Oui c'est une dll enregistré avec regsvr32 mais justement je voulais savoir si l'utilisateur avait bien sa dll d'enregistrée.
Marsh Posté le 08-05-2010 à 11:55:44
Deamon a écrit : |
Et comparée aux constantes fournies dans la doc de cocreateinstance (voir lien plus haut), ca te donne quelle raison? (REGDB_E_CLASSNOTREG, CLASS_E_NOAGGREGATION, CO_S_NOTALLINTERFACES, E_NOINTERFACE ?)
Marsh Posté le 07-05-2010 à 09:12:19
Bonjour,
Dans mon programme en C++ (avec Qt) j'aurais besoin de savoir si une DLL est enregistrée dans Windows ou non (enregistrée avec regsvr32).
J'ai essayé de chercher comment faire que ce soit avec du C++ de base ou bien avec les librairies Qt mais je n'ai rien trouvé à ce sujet.
Merci d'avance pour votre aide.