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: 5714
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 ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilitÓ) chiamava il gioco del Lotto Tassa sulla stupiditÓ.
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: 5714
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 ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilitÓ) chiamava il gioco del Lotto Tassa sulla stupiditÓ.
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: 5714
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 ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilitÓ) chiamava il gioco del Lotto Tassa sulla stupiditÓ.
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: 1556
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: 5714
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 ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilitÓ) chiamava il gioco del Lotto Tassa sulla stupiditÓ.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo