Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Retrouver le handle d'une DLL chargée avec LoadLibrary [ Divers / Débutants ] (andrebernard)

vendredi 3 octobre 2008 à 14:27:40 | Retrouver le handle d'une DLL chargée avec LoadLibrary

andrebernard

Bonjour à tous

J'ai une question toute bete.
Je charge mes DLL de cette maniere pour pouvoir tester si elles sont utilisables sans obtenir de message d'erreur, et ça marche tres bien.

Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long

HwndDll = LoadLibrary("MaDll.dll")

If HwndDll Then
-
-
-
End If

FreeLibrary (HwndDll)

Mais voila, si je ne met pas la variable HwndDll public je perd sa valeur.
J'aimerais savoir quelle est la commande qui permet de retrouver la valeur de "HwndDll" c'est à dire l'emplacement mémoire de ma library.
Ceci me permettrais de pouvoir decharger la library sans avoir à mémoriser son emplacement mémoire dans une variable.


Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long

Private Sub Form_Initialize()
 
 If  LoadLibrary("MaDll.dll") Then
  -
  -
  -
 End If

End Sub

Private Sub Form_Terminate()
 FreeLibrary ( ????)
End Sub 

Merci de votre aide
Bonne journée


vendredi 3 octobre 2008 à 17:02:38 | Re : Retrouver le handle d'une DLL chargée avec LoadLibrary

andrebernard

Réponse acceptée !
Je vous remercie, mais je suis arrivé à trouver tout seul comme un grand.
Je donne la solution si quelqu'un est dans mouise comme moi un jour

Public Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long

Merci et bonne journée

vendredi 3 octobre 2008 à 22:23:08 | Re : Retrouver le handle d'une DLL chargée avec LoadLibrary

jmfmarques

Membre Club
Bonsoir,

Puis-je te faire remarquer que ce handle est retourné par la fonction LoadLibrary ?

    Dim tonhandle AsLong  
    tonhandle = LoadLibrary("MaDll.dll")

Nul besoin de GetModuleHandle

Alors ???

samedi 4 octobre 2008 à 22:55:01 | Re : Retrouver le handle d'une DLL chargée avec LoadLibrary

ghuysmans99

Membre Club
Je vois pas le problème avec ça :

Option Explicit

Declare Function LoadLibrary Lib "kernel32.dll" Alias "LoadLibraryA" ( _
   
ByVal lpLibFileName As String) As Long
   
Declare Function FreeLibrary Lib "kernel32.dll" ( _
   
ByVal hLibModule As Long) As Long
   
Sub Main()
 
Dim hDLL As Long
 hDLL = LoadLibrary(
"gdi32.dll")
 
If hDLL Then
  MsgBox
"DLL chargée : hDLL=" & hDLL, vbInformation, "Info"
 
End If
 FreeLibrary hDLL
End Sub



http://img440.imageshack.us/img440/3552/signaturexr2.gif

dimanche 5 octobre 2008 à 18:02:42 | Re : Retrouver le handle d'une DLL chargée avec LoadLibrary

andrebernard

Merci à tous les deux de votre interet.

Je sais que LoadLibrary retourne le Handle.
Mais ma question etait de savoir si il y avait un moyen de l'obtenir à nouveau, si je le "perdais" ou si je ne le connaissais pas, ou si je ne voulais pas mettre ma variable en public.
Dans le cas d'une ouverture de ma DLL dans une procedure et la fermeture dans une autre.
De plus, si je connaissais un bon moyen de connaitre ce handle, je pourrais vérifier avec certitude que j'ai bien libéré ma DLL apres le FreeLibrary.
D'ailleur comment etre bien sur d'avoir libéré un handle ?????

Donc cette fonction me serait utile deux fois.
Pourriez vous me dire comment vous feriez, si vous ne mémorisiez pas pour X raison le handle à l'ouverture....et en aviez besoin ulterieurement ???

lundi 6 octobre 2008 à 13:04:27 | Re : Retrouver le handle d'une DLL chargée avec LoadLibrary

jmfmarques

Membre Club
Je ne vois simplement pas les "X raisons" éventuelles, si tu ne quitte pas tin appli !

lundi 6 octobre 2008 à 15:06:41 | Re : Retrouver le handle d'une DLL chargée avec LoadLibrary

andrebernard

La verification du dechargement correct d'une library par exemple !!!
Et de ce fait la certitude du travail effectué

lundi 6 octobre 2008 à 21:32:46 | Re : Retrouver le handle d'une DLL chargée avec LoadLibrary

ghuysmans99

Membre Club
@ andrebernard : Mouais, mais quand ça ne fonctionne pas, que faire ??
FreeLibrary

FreeLibrary

The FreeLibrary function decrements the reference count of the loaded dynamic-link library (DLL) module. When the reference count reaches zero, the module is unmapped from the address space of the calling process and the handle is no longer valid.

BOOL FreeLibrary(   HMODULE hLibModule   // handle to loaded library module );

Parameters

hLibModule
Handle to the loaded library module. The LoadLibrary or GetModuleHandle function returns this handle.

Return Values

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.



http://img440.imageshack.us/img440/3552/signaturexr2.gif

lundi 6 octobre 2008 à 22:24:24 | Re : Retrouver le handle d'une DLL chargée avec LoadLibrary

andrebernard

Donc GetModuleHandle donne bien le handle d'une DLL si elle est encore chargée en mémoire, sinon elle retourne zero.
C'est compliqué y'en a qui disent que oui et d'autre que non, c'est bien la premiere fois que je vois un sujet aussi peu clair.
Merci de votre aide



Cette discussion est classé dans : function, dll, declare, loadlibrary, hwnddll


Répondre à ce message

Sujets en rapport avec ce message

comment faire fonctionner l'api FindText et ReplaceText (comdlg32.dll) [ par man_anas ] Slt tout le monde bon j'explique on gros ce que je veux.. comme vous savez tous le controle comdlg.ocx ne contient pas des options pour les boites de Dll avec le meme nom de function interne [ par andrebernard ] Bonjour à tousVoila, j'utilise des DLL standard non-ActiveX créée avec un autre laguage.J'arrive bien a les faire marcher mais le probleme c'est qu'a Passage d'un tableau de string d'une DLL standard à VB [ par andrebernard ] Bonjour a tous Je cherche à recuperer un tableau de string créé dans une DLL standard dans VB J'ai essayé avec ce code, que j'utilise habituelleme récupéré le texte d'un listview via sendmessage [ par deltaxxx ] Voici mon probleme, je veut récupérer les données d'un listview via SendMessageje suis capable de récupérer le handle du programe, ensuite le handle d Utilisation DLL créé [ par allthew3 ] Bonjour,Je viens de créer une DLL (bibliothéque de classes / API) sous Visual Basic 2005 Express Edition mais je n'arrive pas à l'utiliser ...J'ai bie Récupérer une string du ClipBoard [ par violent_ken ] Violent Ken Bonjour, j'ai une petite question : comment puis-je récupérer des strings en provenance du ClipBoard ?Attention, ce n' LoadLibrary / FreeLibary [ par andrebernard ] Bonjour à tousGrace a RENFIELD qui m'a donné la combine d'ouvrir une DLL standard non activeX avec LoadLibrary, avant d'appeller directement une de se Quelques testeurs Windows dans l'assemblée?? (w9x, Nt, XP, Vista, 2K8) [ par PCPT ] bonsoir tout le mondevoilà, je suis en train de faire quelques tests très simplistes en VB6 (SP6) en rapport aux chemins spéciaux windowsarrivé rapide appel de dll windows [ par youri01 ] salut,ma question est toute simple : peut-on faire appel au dll système de windows en utilisant VBS (vbscript) ??avec visual basic généralement on pro Différence de fonctionnement DLL avec VB6 et VB.NET [ par Opiumm ] Bonjour à tous (et bonne année),Je suis coincé sur l'utilisation d'une DLL externe provenant d'un fabriquant.J'utilise un form avec un bouton d'action


Nos sponsors

Sondage...

CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.