Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - controllare se uno o più processi sono in esecuzione
Forum - C/C++ - controllare se uno o più processi sono in esecuzione

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
lorenzo98 (Normal User)
Newbie


Messaggi: 7
Iscritto: 30/04/2015

Segnala al moderatore
Postato alle 15:22
Giovedì, 30/04/2015
Innanzitutto volevo salutare tutti,dato che sono nuovo.
Vi pongo il mio quesito: vorrei creare un programma che chiuda dei determinati processi se altri processi sono attivi(per fare un esempio stupido, se è attivo "cmd.exe" chiuda "notepad.exe"),ma non so come fare dato non conosco modi per verificare se un determinato processo sia in esecuzione oppure no, e  il codice EnumerateAllProcesses che fornisce la microsoft mi da errore in compilazione.
Vi sarei molto grato

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:34
Giovedì, 30/04/2015
Forse dovresti affrontare e risolvere i problemi di quel codice, non cercarne altri ...

Tra l'altro è un codice che copiato e incollato su un progetto Visual Studio funziona a primo colpo ...

Ultima modifica effettuata da nessuno il 30/04/2015 alle 16:40


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
lorenzo98 (Normal User)
Newbie


Messaggi: 7
Iscritto: 30/04/2015

Segnala al moderatore
Postato alle 20:12
Giovedì, 30/04/2015
A me.copiato e incollato non funziona

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:47
Giovedì, 30/04/2015
Beh ... se magari ci fornissi qualche informazione in più ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
lorenzo98 (Normal User)
Newbie


Messaggi: 7
Iscritto: 30/04/2015

Segnala al moderatore
Postato alle 23:02
Domenica, 03/05/2015
io ho copiato e incollato il codice da qua:https://msdn.microsoft.com/en-us/library/windows/desktop/ms ...:

Codice sorgente - presumibilmente C++

  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <tchar.h>
  4. #include <psapi.h>
  5. #pragma comment(lib, "Psapi.lib")
  6.  
  7. // To ensure correct resolution of symbols, add Psapi.lib to TARGETLIBS
  8. // and compile with -DPSAPI_VERSION=1
  9.  
  10. void PrintProcessNameAndID( DWORD processID )
  11. {
  12.     TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
  13.  
  14.     // Get a handle to the process.
  15.  
  16.     HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
  17.                                    PROCESS_VM_READ,
  18.                                    FALSE, processID );
  19.  
  20.     // Get the process name.
  21.  
  22.     if (NULL != hProcess )
  23.     {
  24.         HMODULE hMod;
  25.         DWORD cbNeeded;
  26.  
  27.         if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
  28.              &cbNeeded) )
  29.         {
  30.             GetModuleBaseName( hProcess, hMod, szProcessName,
  31.                                sizeof(szProcessName)/sizeof(TCHAR) );
  32.         }
  33.     }
  34.  
  35.     // Print the process name and identifier.
  36.  
  37.     _tprintf( TEXT("%s  (PID: %u)\n"), szProcessName, processID );
  38.  
  39.     // Release the handle to the process.
  40.  
  41.     CloseHandle( hProcess );
  42. }
  43.  
  44. int main( void )
  45. {
  46.     // Get the list of process identifiers.
  47.  
  48.     DWORD aProcesses[1024], cbNeeded, cProcesses;
  49.     unsigned int i;
  50.  
  51.     if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
  52.     {
  53.         return 1;
  54.     }
  55.  
  56.  
  57.     // Calculate how many process identifiers were returned.
  58.  
  59.     cProcesses = cbNeeded / sizeof(DWORD);
  60.  
  61.     // Print the name and process identifier for each process.
  62.  
  63.     for ( i = 0; i < cProcesses; i++ )
  64.     {
  65.         if( aProcesses[i] != 0 )
  66.         {
  67.             PrintProcessNameAndID( aProcesses[i] );
  68.         }
  69.     }
  70.  
  71.     return 0;
  72. }




Mi da errore in questa parte(riga 27/28):
Codice sorgente - presumibilmente C/C++

  1. if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
  2.              &cbNeeded) )


Ultima modifica effettuata da lorenzo98 il 03/05/2015 alle 23:03
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 0:18
Lunedì, 04/05/2015
Quale errore di preciso ...? Bisogna ottenere le informazioni con la tortura ... eh ... ?

Ultima modifica effettuata da nessuno il 04/05/2015 alle 10:43


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
lorenzo98 (Normal User)
Newbie


Messaggi: 7
Iscritto: 30/04/2015

Segnala al moderatore
Postato alle 15:40
Lunedì, 04/05/2015
scusa mi sono dimenticato,questo è il log di compilazione:


C:\Users\Lorenzo\AppData\Local\Temp\ccW0PaTF.o    In function `Z21PrintProcessNameAndIDm':

28        C:\Users\Lorenzo\Desktop\provaa.cpp             undefined reference to `EnumProcessModules@16'
31        C:\Users\Lorenzo\Desktop\provaa.cpp             undefined reference to `GetModuleBaseNameA@16'

C:\Users\Lorenzo\AppData\Local\Temp\ccW0PaTF.o          In function `main':

51        C:\Users\Lorenzo\Desktop\provaa.cpp    undefined reference to `EnumProcesses@12'

C:\Users\Lorenzo\Desktop\collect2.exe    [Error] ld returned 1 exit status

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1452
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 18:12
Lunedì, 04/05/2015
Cerca la pagina msdn si enumerateprocesses e li c'è la risposta che cerchi... C'è una libreria da linkare e una macro da definire

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:53
Lunedì, 04/05/2015
Se stai compilando con Visual C++ pensa a tutto la linea

#pragma comment(lib, "Psapi.lib")

altrimenti devi indicare al linker (lo farai diversamente a seconda dell'IDE o del compilatore che usi) dove sta la libreria psapi.lib


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo