2009-05-10 25 views
5

Tengo una aplicación para Windows C++ myapp.exe que carga varios complementos.¿Cómo obtener el nombre de archivo de una DLL?

Los complementos deben encontrar la ruta a sus archivos DLL. Puedo usar GetModuleFileName para esto, pero necesita el manejador para la DLL del complemento. No sé dónde conseguir este mango. GetModuleHandle (NULL) devuelve el identificador al ejecutable.

Una opción es usar GetModuleHandle (GetModuleHandle ("myplugin.dll")), pero esto requiere que el nombre del complemento sea codificado, lo que quiero evitar.

Cualquier ayuda es apreciada.

Paul

Respuesta

10

no sé dónde conseguir esta manejar

Se pasa como parámetro a la función de entrada DLLMain().

Si el complemento no puede acceder a su función de entrada DLLMain(), puede utilizar la función VirtualQuery en una parte de su propia memoria y usar el campo AllocationBase de la estructura MEMORY_BASIC_INFORMATION completa como HMODULE.

+3

Perfecto gracias Chris. Aquí es la función que utilizo: HINSTANCE GetMyModuleHandle() { MEMORY_BASIC_INFORMATION MBI; VirtualQuery (GetMyModuleHandle, & mbi, sizeof (mbi)); return (HINSTANCE) (mbi.AllocationBase); } –

Cuestiones relacionadas