ecco il nuovo codice usando la funzione EnumProcessModulesEx
problema mi dice "undefined reference to `EnumProcessModulesEx' "... in build options nalla parte di linker settings ho aggiunto sia la libreria kernel32 che la psapi... pero mi da lo stesso errore.. come posso risolvere?? preciso che uso code blocks...

codice:
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <psapi.h>

void PrintProcessNameAndID( DWORD processID )
{
    TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
    HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID );
    DWORD dwFilterFlag = 0x03;
    if (NULL != hProcess )
    {
        HMODULE hMod;
        DWORD cbNeeded;
        if ( EnumProcessModulesEx( hProcess, &hMod, sizeof(hMod),
 &cbNeeded, dwFilterFlag) )
        {
            GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) );
        }
    }

    _tprintf( TEXT("%s  (PID: %ld).\n"), szProcessName, processID );
    CloseHandle( hProcess );
}

int main()
{
    DWORD aProcesses[1024], cbNeeded, cProcesses;
    unsigned int i;
    if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
        return 0;
    cProcesses = cbNeeded / sizeof(DWORD);
    for ( i = 0; i < cProcesses; i++ )
    {
        if( aProcesses[i] != 0 )
            PrintProcessNameAndID( aProcesses[i] );
    }
    return 0;
}