任务如下——你需要从我的应用程序中获取别人应用程序中我需要的模块的地址。我的尝试:
const HANDLE process_controll::ProcessControll::getProcessHandle(const tstring & processName, const DWORD& accessFlag)
{
return OpenProcess(accessFlag, false, getID(processName));
}
DWORD getModuleAdrEx(const TCHAR * processName, TCHAR* moduleName)
{
HANDLE procHandle = t_proc.getProcessHandle(processName);
if (!procHandle) { msg_er_full; return 0; }
HMODULE module{};
if (!GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, moduleName, &module)) { msg_er_full; return 0; }
MODULEINFO moduleInf{};
if (GetModuleInformation(procHandle, module, &moduleInf, sizeof(MODULEINFO)) == NULL)
{
return 0;
}
CloseHandle(procHandle);
return moduleInf.lpBaseOfDll;
}
实际上,该函数GetModuleInformation返回“失败”,因此返回moduleInf.lpBaseOfDll- 0。
ps Process ID 总是发现 100% true,process handle 也不等于 0,GetModuleHandleEx 返回“true”。
答案原来很简单,有兴趣的朋友,我附上代码:
用法: