VC中遍历目标进程中的模块
VC中遍历目标进程中的模块 MFC代码
win32 也可以用 在下面代码进行修改转换就可以了
CString strModule; 可以换成 char* 但是MODULEENTRY32结构中的szModule是WCHAR
由于博主基础知识较差 所以使用的MFC里的Cstring函数
#include <Tlhelp32.h> /***************************************************/ /* 函数: 查找目标进程中是否有指定模块信息 /* 参数:DWORD 目标进程ID /* 参数:char* 指定模块名称 例如"ntdll.dll" /* 返回: 无 /* 创建人: 日期 内容 /* 金胖胖 2015年2月25日 新建 /***************************************************/ bool CUIConsoleDlg::GetAllModules(DWORD dWProcessId,char* szModuleName) { CString strModule; BOOL bFound = FALSE; HANDLE hModuleSnap = NULL; MODULEENTRY32 me32 = {0}; hModuleSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,dWProcessId); if(hModuleSnap == INVALID_HANDLE_VALUE) { return false; } me32.dwSize = sizeof(MODULEENTRY32); if(::Module32First(hModuleSnap, &me32)) { do { strModule.Format("%s",me32.szModule); if (!strcmp(szModuleName,strModule.GetBuffer())) // 如果找到则返回true { ::CloseHandle(hModuleSnap); return true; } } while(::Module32Next(hModuleSnap,&me32)); } ::CloseHandle(hModuleSnap); return false; } /***************************************************/ /* 函数: 测试按钮函数 /* 返回: 无 /* 创建人: 日期 内容 /* 金胖胖 2015年2月25日 新建 /***************************************************/ void CUIConsoleDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 this->m_list.DeleteAllItems(); DWORD dwID = ::GetCurrentProcessId(); if (this->GetAllModules(dwID,"GameHelpMfcDll.dll")) { AfxMessageBox("找到模块了"); } else { AfxMessageBox("没找到模块"); }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。