⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 processenum.cpp

📁 游戏修改器 大家可以看看呵呵 老牌子的 但是可能别人已经发过了
💻 CPP
字号:
#include "StdAfx.h"
#include ".\processenum.h"

//创建枚举数组
void CProcessEnum::CreateSysArray()
{
	if(!isEmpty())
		Clear();
	HANDLE hsnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//进程列表快照

	PROCESSENTRY32 pro;

	Process32First(hsnap,&pro);

	PROCESSINFO proInfo;

	BOOL isSys = FALSE;//是否系统进程
	int index;

	//将所有进程信息压入数组
	
	while(Process32Next(hsnap,&pro))
	{
		index = 0;
		while(strSysPro[index] != "ENDOFDIC")	//过滤系统进程
	{
			if(pro.szExeFile == strSysPro[index])
			{
				isSys = TRUE;
				break;
			}
			index++;
		}
		if(!isSys)
		{
			proInfo.hPro = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pro.th32ProcessID);
			if(proInfo.hPro == 0)
				continue;
			proInfo.strProName = pro.szExeFile;
			proInfo.dwProId = pro.th32ProcessID;
			
			proInfoArray.Add(proInfo);
		}
		else
			isSys = FALSE;
	}

	//过滤出不可见窗体
	EnumWindows(EnumWindowsProc,(LPARAM)this);
}

//判断数组是否为空
BOOL CProcessEnum::isEmpty()
{
	if(proInfoArray.GetSize())
		return FALSE;
	else
		return TRUE;
}

//获取进程信息
DWORD CProcessEnum::GetProId(int index)
{
	return proInfoArray[index].dwProId;
}

HANDLE CProcessEnum::GetHPro(int index)
{
	return proInfoArray[index].hPro;
}

CString CProcessEnum::GetProName(int index)
{
	return proInfoArray[index].strProName;
}

CString CProcessEnum::GetWndTitle(int index)
{
	return proInfoArray[index].strTitle;
}

//获取数组长度
int CProcessEnum::GetSize()
{
	return (int)proInfoArray.GetSize();
}

//判断一个进程ID是否在数组的一个结构里
int CProcessEnum::Contain(DWORD dwProId)
{
	int size = GetSize();
	int i = 0;
	for(;i<size;i++)
	{
		if(dwProId == proInfoArray[i].dwProId)
			return i;
	}
	return -1;
}

//删除
void CProcessEnum::RemoveAt(int index)
{
	proInfoArray.RemoveAt(index);
}

void CProcessEnum::Clear()
{
	proInfoArray.RemoveAll();
}

//设置窗体信息
void CProcessEnum::SetHWND(int index,HWND hWnd)
{
	proInfoArray[index].hwnd = hWnd;
}

void CProcessEnum::SetWndTitle(int index,CString wndTitle)
{
	proInfoArray[index].strTitle = wndTitle;
}

//进程枚举回调函数
BOOL CALLBACK CProcessEnum::EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
	CProcessEnum *processInfo = (CProcessEnum*)lParam;
	
	DWORD proId;
	GetWindowThreadProcessId(hwnd,&proId);

	int index = processInfo->Contain(proId);
	if( index != -1)
	{
		if(!IsWindowVisible(hwnd))
		{
//			processInfo->RemoveAt(index);
			return TRUE;
		}
		else
		{
			CHAR wndTitle[100];
			GetWindowText(hwnd,wndTitle,100);
			processInfo->SetHWND(index,hwnd);
			CString s = wndTitle;
			processInfo->SetWndTitle(index,s);
		}
	}

	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -