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("沒找到模塊"); }