Hi, I have this function that iterates through all the process and prints them:
Code:
int ProcessJudger (void){
// enumerazione processi
char szProcessName[MAX_PATH];
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
double tmp;
// process identification number
char tempid[MAX_PATH];
char pid[MAX_PATH];
int PidNumber = 0;
if ( !EnumProcesses( aProcesses,
sizeof(aProcesses),
&cbNeeded ) )
return -1;
cProcesses = cbNeeded / sizeof(DWORD);
for ( i = 0; i < cProcesses; i++ ) {
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE,
aProcesses[i] );
if ( NULL != hProcess ) {
HMODULE hMod;
DWORD cbNeeded;
if ( EnumProcessModules( hProcess,
&hMod,
sizeof(hMod),
&cbNeeded
) )
{
GetModuleBaseName( hProcess,
hMod,
szProcessName,
sizeof(szProcessName));
}// end nested IF
}// end IF
printf ("Processo: %s\n", szProcessName);
CloseHandle( hProcess );
}// end FOR
printf("\n");
return 0;
}
It seems to be working but it lists 3 times the same process, for example:
Processo: calc.exe
Processo: calc.exe
Processo: smss.exe
Processo: smss.exe
Processo: winlogon.exe
Processo: services.exe
Processo: lsass.exe
Processo: svchost.exe
Processo: svchost.exe
Processo: svchost.exe
Processo: svchost.exe
Processo: spoolsv.exe
Processo: Explorer.EXE
Processo: Explorer.EXE
Processo: AVGUARD.EXE
Processo: AVWUPSRV.EXE
Processo: nvsvc32.exe
Processo: SMAgent.exe
Processo: svchost.exe
Processo: svchost.exe
Processo: vsmon.exe
Processo: StartupMonitor.exe
Processo: zlclient.exe
Processo: AVGNT.EXE
Processo: boincmgr.exe
Processo: boinc.exe
Processo: setiathome_4.18_windows_intelx86.exe
Processo: msnmsgr.exe
Processo: WISPTIS.EXE
Processo: DevCpp.exe
Processo: msimn.exe
Processo: iexplore.exe
Processo: cmd.exe
Processo: Limiter.exe
Processo: calc.exe
any idea WHY it sees "calc.exe" (that is the last opened process) 3 times?