如何获取DLL的文件名?

Pau*_*mer 5 c++ windows dll

我有一个C++ Windows应用程序myapp.exe,它加载了几个插件.

插件需要找到其DLL的路径.我可以使用GetModuleFileName,但它需要插件DLL的句柄.我不知道从哪里得到这个句柄.GetModuleHandle(NULL)返回可执行文件的句柄.

一种选择是使用GetModuleHandle(GetModuleHandle("myplugin.dll")),但这需要硬编码插件的名称,我想避免.

任何帮助表示赞赏.

保罗

Chr*_*isW 10

我不知道从哪里得到这个句柄

它作为参数传递给您的DLLMain()入口函数.

如果插件无法访问其DLLMain()入口函数,它可以在自己的一块内存上使用VirtualQuery函数,并使用填充的MEMORY_BASIC_INFORMATION结构的AllocationBase字段作为其HMODULE.

  • 非常感谢Chris.这是我使用的函数:HINSTANCE GetMyModuleHandle(){MEMORY_BASIC_INFORMATION mbi; VirtualQuery(GetMyModuleHandle,&mbi,sizeof(mbi)); return(HINSTANCE)(mbi.AllocationBase); } (4认同)