Salve amici, ho appena sfornato questo bel codice:
La mia domanda è la seguente: Per quale strano motivo, nonostante io vada a sottrarre la dimensione massima del mio array di DWORD (MAX_LENGTH) al numero di byte ritornati dalla funzione EnumProcess, e a dividere successivamente tutto per la dimensione di una singola cella dell'array, non ottengo il numero dei processi attualmente in esecuzione?codice:#include <Windows.h> #include <Psapi.h> #define MAX_LENGTH 1000 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ HANDLE handle; DWORD ProcessesId[MAX_LENGTH]; DWORD ProcessesSize; EnumProcesses(&ProcessesId[0], MAX_LENGTH, &ProcessesSize); int i = (MAX_LENGTH - (INT)ProcessesSize) / sizeof(DWORD); for( int x = 0; x < i ; x++ ){ // Faccio qualcosa con ProcessesId[x] } /* Non badate a questo */ handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 2780); TerminateProcess(handle, 0); /* ENon badate a questo */ return 0; }
La controprova ce l'ho quando il debugger, al 69° processo, comincia letteralmente a dare i numeri (Come è giusto che sia) Considerando il valore della cella ProcessesId[70] e le successive, come cifre casuali (78586688) o un numero non del tutto dissimile a questo.
HELP?
Dopodichè, posso continuare postando un'altra domanda sempre relativa all'argomento?
Ovvero, cosa faccio una volta ottenuti i PID [ // Faccio qualcosa con ProcessesId[x] ]

Rispondi quotando