Utilisation d'une dll - Localisation de la dll [VBA/VB] - VB/VBA/VBS - Programmation
Marsh Posté le 28-06-2003 à 16:29:30
une DLL ne peut s'enregistrer que si elle répond aux normes COM/ActiveX. S'il s'agit de ce qu'on appelle communément une vraie DLL avec du vrai stdcall dans les déclarations de fonctions, 3 répertoires de stockage sont possibles:
Windows cherchera la DLL dans cet ordre si aucun répertoire n'est spécifié dans ta clause Lib. Et malheureusement, non, tu ne peux pas placer une constante ou variable dans le chemin d'accès à ta DLL.
L'autre méthode consiste à la charger explicitement dans le code et créer des liens logiques entre des identifiants VB et les fonctions de la DLL, je ne suis même pas sûr que ce soit possible en VB
Marsh Posté le 28-06-2003 à 16:34:43
D'accord, merci l'ami !
J'aurais bien aimé pouvoir registrer ma dll avec Windows, mais ca n'a pas l'air d'etre possible ! Par contre, je trouve étrange qu'il ne soit pas possible de donner en temps réel à l'appli le répertoire ou trouver la Dll, mais bon, ce qui comptais avant tout pour moi, c'était de savoir si c'était possible ou pas !
Sinon, si tu te sens "calé" en dll, j'ai posé un autre message ici :
http://forum.hardware.fr/forum2.ph [...] subcat=386
Marsh Posté le 29-06-2003 à 18:12:34
Ben tu créés une entrée à toi dans la base de registre qui donne le chemin de la dll ...
Marsh Posté le 02-07-2003 à 14:02:56
Tu peux m'expliquer comment faire ou créer cette clef? Quelque chose à déclarer ensuite dans VBA/Access?
Marsh Posté le 02-07-2003 à 14:05:27
Ben soit via les API (RegCreateKey, RegSetValue, ...)
soit avec un fichier .reg
Marsh Posté le 02-07-2003 à 16:53:44
Nan, mais ca hje sais faire!
Mais ce que je veux dire, c'est savoir quelle clef créer, ou la créer, et quelle valeur lui donner pour que ce soit pris en compte?
A moins que tu parles de faire une prioriiété maison, qui donnerait le path de la dll et ensuite, d'aller le chercher dans mon code, c'est ca?
Si c'est ce à quoi tu penses, alors ca ne marche pas, car dans
Code :
|
le path doit etre indiqué de maniere directe, à la main, et pas avec une variable !
Marsh Posté le 02-07-2003 à 17:26:43
Heu non, je parle de créer ta clé genre :
HKEY_LOCAL_MACHINE\SOFTWARE\MonProg\Dll
Pour chaque dll listée à cet endroit, ton prog tente de l'ouvrir, fait le teste du checksum tout ça, et si tout est ok, il la charge.
Marsh Posté le 02-07-2003 à 19:02:14
HelloWorld a écrit : Heu non, je parle de créer ta clé genre : |
Bah oui, mais c'est ca mon probleme, je ne sais pas comment faire pour "charger" une dll avec un chemin "custom", c'est à dire pas un chemin qui soit constant dans mon code, que j'écris à la main dans mon code
Marsh Posté le 03-07-2003 à 10:34:34
LoadLibrary, bind avec les exports avec GetProcAddress puis une fois fini FreeLibrary.
Marsh Posté le 03-07-2003 à 14:45:45
HelloWorld a écrit : LoadLibrary, bind avec les exports avec GetProcAddress puis une fois fini FreeLibrary. |
Lol, pour rappelle, je travaille en VBA, et je ne pense pas que VBA possède un tel "LoadLibrary"
Là est tout le probleme d'ailleurs ! VBA permet de travailler avec les Dll, mais par contre, il ne semble pas pouvoir permettre d'indiquer dynamiquement où se trouve les dll !
Marsh Posté le 03-07-2003 à 15:22:17
il s'agit de fonctions de l'API Win32, qui s'utilisent également via un Declare.
Marsh Posté le 03-07-2003 à 15:35:17
drasche a écrit : une DLL ne peut s'enregistrer que si elle répond aux normes COM/ActiveX. S'il s'agit de ce qu'on appelle communément une vraie DLL avec du vrai stdcall dans les déclarations de fonctions, 3 répertoires de stockage sont possibles:
|
Moi j'dirais que tu te trompes là.
Windows va cherche la dll donnée dans les chemins suivants (ds l'ordre):
1-chemin de l'appliquation
2-chemin courant
3-répertoire system de windows (ou system32 puis system pr NT-like)
4-répertoire windows
5-tous les chemins répertoriés dans la variable d'environnement PATH
Il suffit donc d'ajout la chemin de la dll à PATH (via un setup), et tu n'auras plus à la préciser.
Marsh Posté le 03-07-2003 à 15:47:12
http://msdn.microsoft.com/library/ [...] ibrary.asp
http://msdn.microsoft.com/library/ [...] ectory.asp
Marsh Posté le 28-06-2003 à 14:36:26
Salut,
Voila, en VBA/VB, la déclaration d'une dll se fait comme suit :
Voilà, je me demandais (mais j'ai essayé sans succès) s'il était possible de spécifier le répertoire ou se trouve la Dll à la volée, ou meme en mettant le tout dans une constante, ou alors l'emplcement de la Dll doit il etre connu à la création ducode VB?
J'aurais imaginé qqchose come ca :
Mais ca ne semble pas marcher !
Je vais créer une dll toute simple avec Visual C++ ! Je me demandais sil était ensuite possible de registrer ma dll sous windows, quelque soit son emplacement? (genre, on le fait une fois pour toutes, et ensuite, on l'utilise comme bon nous semble, un peu comme les librairies présente dans Access.
Enfin, deniere question... Est ce que l'appel à des "modules" C++ doit se faire nécessairement au travers de librairies? Ou existe t il un moyen d'intégrer la libraire au sein meme du programme VB/VBA? (Access?)
Merci,
Yoyo*