获取模块路径通过GetModuleFileName,关键在于模块句柄的获取,几种方法如下:
一:在dllmain中保存HMODULE
二:通过GetModuleHandle传入dll的名称获取其HMODULE
三:通过函数地址获取其模块句柄
1:HMODULE GetSelfModuleHandle()
{
MEMORY_BASIC_INFORMATION mbi;
return ((::VirtualQuery(GetSelfModuleHandle, &mbi, sizeof(mbi)) != 0) ? (HMODULE)mbi.AllocationBase : NULL);
}
2:GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
(LPCSTR)&XXX, //可以是任何函数,全局变量等的地址
&hModule);
四:(HINSTANCE)&__ImageBase
艺文笔记:https://www.xuwenyan.com/archives/43