【问题标题】:How to get the filename of a DLL?如何获取 DLL 的文件名?
【发布时间】:2009-05-10 20:27:23
【问题描述】:

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

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

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

感谢任何帮助。

保罗

【问题讨论】:

    标签: c++ windows dll


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢克里斯。这是我使用的函数: HINSTANCE GetMyModuleHandle() { MEMORY_BASIC_INFORMATION mbi; VirtualQuery(GetMyModuleHandle, &mbi, sizeof(mbi));返回(HINSTANCE)(mbi.AllocationBase); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2011-05-11
    • 1970-01-01
    相关资源
    最近更新 更多