程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> VC中遍歷目標進程中的模塊,vc模塊

VC中遍歷目標進程中的模塊,vc模塊

編輯:C++入門知識

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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved