2009-05-10 2 views
5

У меня есть приложение C++ Windows myapp.exe, которое загружает несколько плагинов.Как получить имя файла DLL?

Плагины должны найти путь к своим DLL. Я могу использовать GetModuleFileName для этого, но для этого нужен дескриптор для подключаемой DLL. Я не знаю, где взять этот дескриптор. GetModuleHandle (NULL) возвращает дескриптор исполняемого файла.

Один из вариантов - использовать GetModuleHandle (GetModuleHandle («myplugin.dll»)), но для этого требуется, чтобы имя плагина было жестко запрограммировано, чего я хочу избежать.

Любая помощь приветствуется.

Пол

ответ

10

Я не знаю, где взять эту ручку

Это передается в качестве параметра в вашей функции входа DllMain().

Если плагин не может получить доступ к своей функции ввода DLLMain(), он может использовать функцию VirtualQuery на части своей собственной памяти и использовать поле AllocationBase заполненной структуры MEMORY_BASIC_INFORMATION в качестве своего HMODULE.

+3

Perfect спасибо Крис. Вот функция я использую: HINSTANCE GetMyModuleHandle() { MEMORY_BASIC_INFORMATION MBI; VirtualQuery (GetMyModuleHandle, & mbi, sizeof (mbi)); return (HINSTANCE) (mbi.AlocationBase); } –

Смежные вопросы