Thread: enumerating process

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date
    Mar 2004
    Posts
    161

    enumerating process

    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?
    Last edited by BianConiglio; 07-07-2005 at 05:23 PM.
    This forum is the best one I've ever seen. Great ppl, great coders

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. init adopts zombie process?
    By password636 in forum Linux Programming
    Replies: 4
    Last Post: 07-01-2009, 10:05 AM
  2. create a child process that creates a child process
    By cus in forum Linux Programming
    Replies: 9
    Last Post: 01-13-2009, 02:14 PM
  3. Replies: 3
    Last Post: 10-15-2008, 09:24 AM
  4. Problem with forking a process
    By Unitedroad in forum C Programming
    Replies: 10
    Last Post: 10-04-2007, 01:43 AM
  5. process programming
    By St0rM-MaN in forum Linux Programming
    Replies: 2
    Last Post: 09-15-2007, 07:53 AM