2009-05-10 7 views
5

J'ai une application Windows C++ myapp.exe qui charge plusieurs plug-ins.Comment obtenir le nom de fichier d'une DLL?

Les plug-ins doivent trouver le chemin d'accès à leurs DLL. Je peux utiliser GetModuleFileName pour cela, mais il a besoin du handle pour la DLL de plug-in. Je ne sais pas où trouver cette poignée. GetModuleHandle (NULL) renvoie le descripteur à l'exécutable. GetModuleHandle (GetModuleHandle ("myplugin.dll")), mais cela nécessite le nom du plugin à coder en dur que je veux éviter.

Toute aide est appréciée.

Paul

Répondre

10

Je ne sais pas où trouver cette poignée

Il est passé en paramètre à votre fonction d'entrée DLLMain(). Si le greffon ne peut pas accéder à sa fonction d'entrée DLLMain(), il peut utiliser la fonction VirtualQuery sur une partie de sa propre mémoire et utiliser le champ AllocationBase de la structure MEMORY_BASIC_INFORMATION remplie comme HMODULE.

+3

Parfait merci Chris. Voici la fonction que j'utilise: HINSTANCE GetMyModuleHandle() { MEMORY_BASIC_INFORMATION MBI; VirtualQuery (GetMyModuleHandle, & mbi, sizeof (mbi)); return (HINSTANCE) (mbi.AllocationBase); } –

Questions connexes