// Estas leyendo...

C \\ C++

Listar procesos en C++

Codigo fuente en C++ para listar los procesos de Windows.

#include <cstdlib>
#include <windows.h>
#include <psapi.h>
#include <stdio.h>

/*
/* 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), &amp;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;
}

Descargar Programa compilado

Comentarios

5 comments para “Listar procesos en C++”

  1. no funciona marca error

    Posted by josue | septiembre 1, 2008, 13:34
  2. 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

    Posted by yurien | octubre 1, 2008, 12:45
  3. 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?

    Posted by Victor | abril 22, 2011, 13:03
  4. 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

    Posted by Elinv | septiembre 30, 2011, 0:32
  5. 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! :/

    Posted by Lazt | octubre 11, 2011, 19:18

Deja un comentario