Codigo fuente en C++ para listar los procesos de Windows.
/*
/* Listar procesos C++
/* By Octalh
/* www.aztekmindz.org
/*
*/
using namespace std;
void procesos(){
DWORD Procesos[200], PN, cProcesos;
unsigned int i;
TCHAR procsnombre[200] = TEXT("");
if ( !EnumProcesses( Procesos, sizeof(Procesos), &PN ) )
return;
cProcesos = PN / sizeof(DWORD);
for ( i = 0; i < cProcesos; i++ ) {
HANDLE hProcesos = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, Procesos[i] );
if (NULL != hProcesos ){
GetModuleBaseName( hProcesos, NULL, procsnombre, sizeof(procsnombre)/sizeof(TCHAR) );
}
printf(TEXT(" %s, PID = %u \n"), procsnombre, Procesos[i]);
CloseHandle( hProcesos );
}
}
int main(int argc, char *argv[])
{
procesos();
system("PAUSE");
return EXIT_SUCCESS;
}
no funciona marca error
este codigo me da un error en la linea
if ( !EnumProcesses( Procesos, sizeof(Procesos), &PN ) )
al parecer el pto y como no va detras de amp demas el “amp” no me lo reconoce el codigo
Algunos procesos no puedo ver sus propiedades, creo que estan bloqueados parecen que no tengo privilegios, pero mi cuenta es administrador en win xp. ¿Saben como puedo desbloquearlos o habilitarlos para ver todo el listado con nombre y todo?
Por ejemplo en DEV C++ o CODE::BLOCKS 10.05, solamente tienen que hacer lo siguiente para que el ejemplo mas arriba funcione perfectamente:
1°)En la linea siguiente:
——-
if ( !EnumProcesses( Procesos, sizeof(Procesos), &PN ) )
——-
En realidad deben reemplazar el ampersand (&) por & y les debería quedar así:
——-
if ( !EnumProcesses( Procesos, sizeof(Procesos), &PN ) )
——-
Se ha tratado de un error de transcripción HTML.
Respecto de lo segundo:
2°)undefined reference to EnumProcesses
Falta linkear la librería:
Por ejemplo en CODE BLOCKS 10.05
En Project -> Properties -> Project´s Build options -> Linker settings -> Agregan “psapi”
y LISTO el programa funcionará
psapi
Muy buen codigo, anda muy bien, solo quisiera saber si los PID son variables o son los mismos para procesos determinados, por ejemplo pretendo que me reconozca el proceso Shutdown (apagar sistema) para poder finalizar bien mi aplicacion y guardar bien un archivo. como puedo hacer?
depronto que sea asi:
if (procsnombre == “shutdown.exe”)
-> cerrar archivo y finalzar.
-> siga corriendo hasta encontrarlo.
yo me imagine algo asi pero no me funciona! :/