C/C++ 学习日记5:获取某进程里的指定模块的地址 源码

直接上源码,对应什么库以及函数的作用,自己查MSDN

在此感谢群里的三位大佬

//取指定进程PID里DLL的地址
HMODULE GetProcessModuleHandle(DWORD pid, CONST TCHAR* moduleName)
{
    MODULEENTRY32 moduleEntry;
    HANDLE handle = NULL;
    handle = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid); //  获取进程快照中包含在th32ProcessID中指定的进程的所有的模块。
    if (!handle) {
        CloseHandle(handle);
        return NULL;
    }
    ZeroMemory(&moduleEntry, sizeof(MODULEENTRY32));
    moduleEntry.dwSize = sizeof(MODULEENTRY32);
    if (!Module32First(handle, &moduleEntry)) {
        CloseHandle(handle);
        return NULL;
    }
    do {
        if (_tcscmp(moduleEntry.szModule, moduleName) == 0) {
            return moduleEntry.hModule;
        }
    } while (Module32Next(handle, &moduleEntry));
    CloseHandle(handle);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42950931/article/details/82356899