MFC:如何获取DLL文件名?

发布于 2024-12-15 21:16:17 字数 245 浏览 1 评论 0原文

我有一个由第 3 方应用程序加载的 MFC DLL。如何从 DLL 代码中获取 DLL 文件名?也就是说,例如,如果 DLL 的名称是 mycode.dll,那么我希望能够在代码中检索字符串“mycode.dll”。

我应该补充一点,如果磁盘上的 DLL 文件名发生更改,那么我想获取磁盘上的当前名称(我的意思不是在运行时更改,而是在主程序的调用之间更改)。

我的 DLL 是作为 CWinApp 类实现的,我的代码没有显式的 DllMain。

I have an MFC DLL that is loaded by a 3rd party application. How can I get the DLL filename from within the code of the DLL? That is, for example, if the DLL's name is mycode.dll, in code I want to be able to retrieve the string "mycode.dll".

I should add that if the DLL file name is changed on disk then I would like to get the current name on disk (I don't mean changed during run-time but changed between invocations of the main program).

My DLL is implemented as a CWinApp class, my code has no explicit DllMain.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

贵在坚持 2024-12-22 21:16:17

您可以调用 AfxGetStaticModuleState 来获取指针到 AFX_MODULE_STATE 结构,该结构有一个包含模块名称的成员 m_lpszCurrentAppName(应用程序或 DLL,具体取决于它所在的位置)调用自)。

You can call AfxGetStaticModuleState to get a pointer to an AFX_MODULE_STATE structure, which has a member m_lpszCurrentAppName containing the module name (app or DLL depending on where it's called from).

苍景流年 2024-12-22 21:16:17

请参阅获取 GetModuleFileName 功能。

当您为第一个参数传递 NULL 时,它将仅使用当前进程的句柄。

See the Get GetModuleFileName function.

When you pass in NULL for the first parameter, it will just use the handle for the current process.

┼── 2024-12-22 21:16:17

GetModuleFileName 函数肯定返回加载 DLL 的 EXE...而不是 DLL 本身。我本来想将此作为评论发布在上面,但我还没有足够的积分,嗯。

GetModuleFileName function definitely returns the EXE THAT LOADED THE DLL... not the DLL itself. I would have posted this as a comment above but I don't have enough points yet, meh.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文