gpt4 book ai didi

c++ - 从 DLL 中获取 HModule

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:20 24 4
gpt4 key购买 nike

我需要从我的 DLL 加载一些资源(我需要从 DLL 代码加载它们),为此我正在使用 FindResource。

为此,我需要 DLL 的 HModule。怎么找到那个?

(不知道DLL的名称(文件名)(用户可以更改))

最佳答案

您可以从 DllMain() 入口点的第一个参数中获取它。写一个,存入全局变量:

HMODULE DllHandle;

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved) {
if (dwReason == DLL_PROCESS_ATTACH) DllHandle = hModule;
return TRUE;
}

有一个未记录的 hack,适用于我见过的任何版本的 32 位和 64 位 Windows。 DLL 的 HMODULE 与模块的基地址具有相同的值:

static HMODULE GetThisDllHandle()
{
MEMORY_BASIC_INFORMATION info;
size_t len = VirtualQueryEx(GetCurrentProcess(), (void*)GetThisDllHandle, &info, sizeof(info));
assert(len == sizeof(info));
return len ? (HMODULE)info.AllocationBase : NULL;
}

关于c++ - 从 DLL 中获取 HModule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com