- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
....
#define MAX_PROC_LIST 1024
enum PROCCESS_TYPE
{
	 OFFRO,
         GFEER,
         OLLYD,
	 FLOOT,
          SFOIT,
};
typedef struct 
{
	PROCCESS_TYPE tType;
	unsigned short uPid;
	bool bIA32;
}ACTIVE_PROCCESS_INFO, *PACTIVE_PROCCESS_INFO;
....
bool MONITOR_PROCCESS_ENGINE::GetActiveProccessInfo(PACTIVE_PROCCESS_INFO pActiveInfoProccess, const unsigned int nIndex)
{
	if(nIndex < 0) return false;
	PROCESSENTRY32 pe32;
	HANDLE hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
	bool bFound = false;
	pe32.dwSize = sizeof( PROCESSENTRY32 );
	if(!Process32First( hProcessSnap, &pe32 )) return false;
	char szNameImage[MAX_PATH];
	ZeroMemory(szNameImage, MAX_PATH);
	do 
	{
		if(pe32.th32ProcessID == aProccessList[nIndex])
		{
			bFound = true;
		        wcstombs(szNameImage, (const wchar_t *)pe32.szExeFile, wcslen(pe32.szExeFile));
			break;
		}
	} while( Process32Next( hProcessSnap, &pe32 ));
	CloseHandle(hProcessSnap);
	if(bFound && strlen(szNameImage)) 
        {
		  if(!strcmp(szNameImage, szActiveList32[0])) 
			  pActiveInfoProccess->tType = OFFRO;
		  else
		  if(!strcmp(szNameImage, szActiveList32[1])) 
			   pActiveInfoProccess->tType = GFEER;
		  else
		  if(!strcmp(szNameImage, szActiveList32[2]))
			  pActiveInfoProccess->tType =  OLLYD;
		  else 
		  if(!strcmp(szNameImage, szActiveList32[3]))
			  pActiveInfoProccess->tType =  FLOOT;
		  else 
		  if(!strcmp(szNameImage, szActiveList32[4]))
			  pActiveInfoProccess->tType =  SFOIT;
		  else  return false;
		 pActiveInfoProccess->uPid = (unsigned short) aProccessList[nIndex];
		 pActiveInfoProccess->bIA32 = true; // Fixme x64?
	}
	else return false;
	return true;
}