2009-05-10 14 views
5

Ich habe eine C++ - Windows-Anwendung myapp.exe, die mehrere Plug-Ins lädt.Wie bekomme ich den Dateinamen einer DLL?

Plugins müssen den Pfad zu ihren DLLs finden. Ich kann GetModuleFileName dafür verwenden, aber es benötigt das Handle für die Plug-in-DLL. Ich weiß nicht, wo ich diesen Griff bekommen soll. GetModuleHandle (NULL) gibt das Handle an die ausführbare Datei zurück.

Eine Möglichkeit besteht darin, GetModuleHandle (GetModuleHandle ("myplugin.dll")) zu verwenden, aber dafür muss der Name des Plugins fest codiert sein, was ich vermeiden möchte.

Jede Hilfe wird geschätzt.

Paul

Antwort

10

Ich weiß nicht, wo diese erhalten Griff

Es als Parameter an Ihre DLLMain() Entry-Funktion übergeben wird. Wenn das Plugin nicht auf seine DLLMain() -Eintragsfunktion zugreifen kann, kann es die VirtualQuery-Funktion für einen Teil seines eigenen Speichers verwenden und das AllocationBase-Feld der ausgefüllten MEMORY_BASIC_INFORMATION-Struktur als HMODULE verwenden.

+3

Perfect danke Chris. Hier ist die Funktion, die ich verwenden: HINSTANCE GetMyModuleHandle() { MEMORY_BASIC_INFORMATION mbi; VirtualQuery (GetMyModuleHandle, & mbi, sizeof (mbi)); Rückkehr (HINSTANCE) (mbi.AllocationBase); } –

Verwandte Themen