charger decharger dll

charger decharger dll - VB/VBA/VBS - Programmation

Marsh Posté le 06-04-2004 à 16:33:55    

COmment charger et decharger dynamiquement une dll en VB ?! si c possible  :ange:

Reply

Marsh Posté le 06-04-2004 à 16:33:55   

Reply

Marsh Posté le 06-04-2004 à 16:47:51    

possible uniquement avec les API, mais là ça dépasse mes compétences :/
 
A partir de la fonction LoadLibrary disponible dans les API Win32, tu as un début de réponse. (les recherches google "vb6+fonctionwin32recherchée" sont toujours très fructueuses)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 06-04-2004 à 17:31:22    

ouaip merki bcp
loadlibrary le fait bien mais bon finallement ça complique un peu trop l'appel aux fonctions de la dll par la suite je crois pas que je vais m'engager ds cette voie ;-)

Reply

Marsh Posté le 06-04-2004 à 17:35:41    

si c'est juste pour appeler des fonctions d'une DLL accessible normalement (répertoire de l'application ou répertoire système), les Declare suffisent amplement ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 06-04-2004 à 17:36:34    

Pour charger une DLL avec Win32 :
- récupérer le handle de la dll avec GetModuleHandle()
- tester le handle : si == 0, alors la dll n'est pas chargée, sinon c'est OK
- si elle n'est pas chargée, alors appeler LoadLibrary() pour la charger
 
Pour la décharger :
- utiliser GetModuleHandle() comme précédemment
- tester le handle comme précédemment
- si la dll est chargée, utiliser FreeLibrary() pour la décharger


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 06-04-2004 à 17:43:09    

j'explique mon pb ....
j'utilise une dll qui me permet de "discuter" avec un appareil via ethernet.. sauf que cette dll a l'air mal programmée et des que la liasion ethernet est perdue il faut que je redemarre mon programme (meme leur prg d'exemple a ce symptome) mon idée etait donc de decharger la dll et de la recharger ensuite pour palier a ce pb..!  
 
si j'utilise loadlibray et free... le pb c'est que pour appler les fonction de la dll je doit faire des callwindowsproc etc non? je ne peu pas declarer comme sui:  
variable As dll.dlldriver
 
et ensuite variable.send ou variable.configure etc...
 

Reply

Marsh Posté le 06-04-2004 à 17:53:42    

got a écrit :


si j'utilise loadlibray et free... le pb c'est que pour appler les fonction de la dll je doit faire des callwindowsproc etc non? je ne peu pas declarer comme sui:  
variable As dll.dlldriver


euh, connais tu VB ? non parce que la déclaration de dll externe, c'est pas comme ça du tout hein !
t'as juste qu'a rajouter ces lignes au début de ton source :

Code :
  1. Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
  2. Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
  3. Public Declare Function GetModuleHandle Lib "kernel32" Alias
  4. "GetModuleHandleA" (ByVal lpModuleName As String) As Long


et ça s'arrête là


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 06-04-2004 à 22:09:27    

bah euuh je dois pas connaitre VB alors...! :-p
ce que tu me cite là es tpas la declaration d'API ? c different d'une dll pour moi?!  
mais bon c vrai que je amitrise aps des masses le sujet ..!

Reply

Marsh Posté le 06-04-2004 à 22:11:49    

bin les Declare, c'est pour référencer directement les API et les utiliser comme des fonctions VB (enfin presque, à cause du type Any et autre exoticités [:joce]), puis effectivement, t'as la méthode du LoadLibrary qui a l'air de mieux convenir à ton cas, mais là c'est plus lourd à gérer/coder/s'y retrouver.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed