获取当前模块句柄(dll、exe) HMODULE getCurrModuleHandle() { MEMORY_BASIC_INFORMATION info; ::VirtualQuery((LPCVOID)(&getCurrModuleHandle), &info, sizeof(info)); return (HMODULE)info.AllocationBase; }
HMODULE hModule = GetModuleHandleA(NULL); HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, GetCurrentProcessId()); if(hSnap != INVALID_HANDLE_VALUE) { MODULEENTRY32 me; me.dwSize =sizeof(me); if(Module32First(hSnap, &me)) { printf("%ls: %x\n", me.sz...
参数为模块的名称,比如 abcd.dll(也可能有.exe,不过较少)。如果参数为NULL,表示取当前进程(.exe)的模块句柄
LoadLibrary是把一个模块映射进调用进程的地址空间,需要时增加引用计数而GetModuleHandle是返回一个以映射进调用进程地址空间的模块的句柄并不增加引用计数
c++ 获取当前程序的主模块句柄 c++ char text[2014]; GetModuleBaseNameA(GetCurrentProcess(), 0, text, 1024); HMODULE hModule = GetModuleHandleA(text); 1. 2. 3. HMODULE hModule = GetModuleHandleA(NULL); 1. HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, ...
获取当前模块句柄(dll、exe) HMODULE getCurrModuleHandle() { MEMORY_BASIC_INFORMATION info; ::VirtualQuery((LPCVOID)(&getCurrModuleHandle), &info, sizeof(info)); return (HMODULE)info.AllocationBase; }