- 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;
}