lorenzo98 (Normal User)
Newbie
Messaggi: 7
Iscritto: 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
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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à. |
|
lorenzo98 (Normal User)
Newbie
Messaggi: 7
Iscritto: 30/04/2015
|
A me.copiato e incollato non funziona
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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à. |
|
lorenzo98 (Normal User)
Newbie
Messaggi: 7
Iscritto: 30/04/2015
|
io ho copiato e incollato il codice da qua:https://msdn.microsoft.com/en-us/library/windows/desktop/ms ...:
Codice sorgente - presumibilmente C++ |
#include <windows.h> #include <stdio.h> #include <tchar.h> #include <psapi.h> #pragma comment(lib, "Psapi.lib") // To ensure correct resolution of symbols, add Psapi.lib to TARGETLIBS // and compile with -DPSAPI_VERSION=1 void PrintProcessNameAndID( DWORD processID ) { TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>"); // Get a handle to the process. HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID ); // Get the process name. if (NULL != hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) ); } } // Print the process name and identifier. _tprintf( TEXT("%s (PID: %u)\n"), szProcessName, processID ); // Release the handle to the process. CloseHandle( hProcess ); } int main( void ) { // Get the list of process identifiers. DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) { return 1; } // Calculate how many process identifiers were returned. cProcesses = cbNeeded / sizeof(DWORD); // Print the name and process identifier for each process. for ( i = 0; i < cProcesses; i++ ) { if( aProcesses[i] != 0 ) { PrintProcessNameAndID( aProcesses[i] ); } } return 0; }
|
Mi da errore in questa parte(riga 27/28):
Codice sorgente - presumibilmente C/C++ |
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded) )
|
Ultima modifica effettuata da lorenzo98 il 03/05/2015 alle 23:03 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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à. |
|
lorenzo98 (Normal User)
Newbie
Messaggi: 7
Iscritto: 30/04/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
|
|
TheDarkJuster (Member)
Guru^2
Messaggi: 1620
Iscritto: 27/09/2013
|
Cerca la pagina msdn si enumerateprocesses e li c'è la risposta che cerchi... C'è una libreria da linkare e una macro da definire
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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à. |
|