VC中遍歷目標進程中的模塊,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("沒找到模塊");
}