Enregistrement des Dll

cs_xavier77 Messages postés 95 Date d'inscription jeudi 27 décembre 2001 Statut Membre Dernière intervention 17 avril 2013 - 24 oct. 2005 à 15:47
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 24 oct. 2005 à 17:16
Bonjour à tous,

J'ai fait un prog en VB6 qui contient un exe et plusieurs Dll. Jusqu'a le prog enregistrait les Dll automatiquement en utilisant Regsrv32. Depuis peu, on m'a parlé de l'API LoadLibrary (kernel32) qui permettrait de charger une Dll sans avoir a l'enregistrer préalablement. Mais je trouve très d'article ou d'exemple qui utilisent l'API LoadLibrary... Alors est ce que vous la connaissez?? Et surtout quelles sont les différences (avantages et inconvénients) entre cette API et Regsvr32 ??
Merci à tous et bon prog!!

Xavier

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 oct. 2005 à 15:58
Si tes DLLs sont des ActiveX VB faudra dans tous les cas les enregistre, LoadLibrary c'est pour charger une DLL en mémoire et trouver des pointeurs de fonction avec GetProcAddress.

ciao...
BruNews, MVP VC++
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 oct. 2005 à 16:25
J'utilisais LoadLibrary il y a quelques temps pour enregistrer les dll
(ca me permettait de ne pas passer par RegSvr32), mais finalement, vu
que RegSvr32 marche très bien en mode silencieux, je n'utilise plus que
lui, mais si ca t"interesse, voici le code pour enregistrer une dll
sans RegSvr32 :



'on charge la dll

LNG_Librairie = LoadLibrary(App.Path & "\OBJ_GESTION_COULEUR.dll")



'on récupère la procédure d'enregistrement

GetProcAddress LNG_Librairie, "DllRegisterServer"



'on enregistre la dll dans la base de registre

CallWindowProc GetProcAddress(LNG_Librairie,
"DllRegisterServer"), Me.hWnd, ByVal 0&, ByVal 0&, ByVal 0&



'on libère la mémoire

FreeLibrary LNG_Librairie

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
0
cs_xavier77 Messages postés 95 Date d'inscription jeudi 27 décembre 2001 Statut Membre Dernière intervention 17 avril 2013
24 oct. 2005 à 17:03
en fait, mon véritable problème est que mon prog est utilisé soit en reseau, soit en local. Les utlisateurs ont 2 raccourcis sur leur bureau pointant sur les 2 exe. Avec le regsvr32, je recontre pas mal de probleme des qu'il debranche le cable reseau de leur PC portable pour utliser le prog en local car la Dll a été enregistré avec le regsvr32 et un chemin sur le serveur et si je refait un regsvr32 avec mes dll en locale , ca créer quelques conflits.
Est ce que l'API LoadLibrary resout ce genre de problème?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 oct. 2005 à 17:16
Ton problème ne viens sûrement pas du RegSvr32, mais plutôt de la
technologie ActiveX je pense : pour fonctionner, une dll ActiveX doit
être enregistrée. Si deux versions différentes sont utilisées, il peut
y avoir des conflits en effet, surtout si les dll ne sont pas compilées
en mode compatibilité binaire car ton projet risque de n'avoir une
référence qu'à la version la plus récente, et du coup, il ne trouve
plus l'ancienne (logique d'ailleurs !).



J'ai déjà eu ce genre de problème, et la solution est simple :
n'utiliser les ActiveX qu'en local, ou alors, bien faire attention que
les versions en local soit les mêmes que celles sur le réseau...

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
0
Rejoignez-nous