How do I get the HMODULE for the currently executing code?(如何获取当前正在执行的代码的 HMODULE?)
问题描述
我有一个静态库,可以链接到 .exe
或 .dll
.在运行时,我希望我的库函数之一为静态库代码已链接到的任何内容获取 HMODULE
.
I have a static library that may get linked into either a .exe
or a .dll
. At runtime I want one of my library functions to get the HMODULE
for whatever thing the static library code has been linked into.
我目前使用以下技巧(灵感来自这个论坛)::>
I currently use the following trick (inspired from this forum):
const HMODULE GetCurrentModule()
{
MEMORY_BASIC_INFORMATION mbi = {0};
::VirtualQuery( GetCurrentModule, &mbi, sizeof(mbi) );
return reinterpret_cast<HMODULE>(mbi.AllocationBase);
}
有没有更好的方法来做到这一点,而且看起来不那么笨拙?
Is there a better way to do this that doesn't look so hacky?
(注意:这样做的目的是加载一些我知道我的用户将在与我的静态库同时链接的 Win32 资源.)
推荐答案
HMODULE GetCurrentModule()
{ // NB: XP+ solution!
HMODULE hModule = NULL;
GetModuleHandleEx(
GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
(LPCTSTR)GetCurrentModule,
&hModule);
return hModule;
}
这篇关于如何获取当前正在执行的代码的 HMODULE?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何获取当前正在执行的代码的 HMODULE?


基础教程推荐
- Windows Media Foundation 录制音频 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 从 std::cin 读取密码 2021-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01