Ciao ragazzi, io per terminare processi in C++ uso il seguente metodo:
incude, spero di non essermene dimenticato qualcuno![]()
"Sniffa" i processi correnti.codice:#include <windows.h> #include <string> #include <sstream> #include <tlhelp32.h> #include <psapi.h>
questa funzione riduce a minuscoli i caratteri della stringa del nome del processo da terminare e di quello sniffato, in modo che se chiamocodice:BOOL SniffProcess(char * ProcessToSniff) { DWORD PiDProcess; HANDLE hProcess = NULL; PROCESSENTRY32 nProcess = {0}; PPROCESS_MEMORY_COUNTERS mProcess; DWORD dProcess; string s_NomeProcesso; string s_ProcessToSniff; s_ProcessToSniff.assign(ProcessToSniff); hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(hProcess != INVALID_HANDLE_VALUE) { nProcess.dwSize = sizeof(PROCESSENTRY32); while(Process32Next(hProcess, &nProcess)) { PiDProcess = nProcess.th32ProcessID; s_NomeProcesso.assign(nProcess.szExeFile); s_NomeProcesso = KillCapital(s_NomeProcesso); s_ProcessToSniff = KillCapital(s_ProcessToSniff); if(s_NomeProcesso == s_ProcessToSniff){ //if(MessageBox(NULL,s_NomeProcesso.c_str(),"Terminare?",MB_ICONQUESTION|MB_YESNO) == IDYES) KillProcess(PiDProcess, DELETE); return TRUE;} } } return FALSE; }
SniffProcess(Firefox.exe); e il processo è firefox.exe me lo termina comunque
infine il DISTRUTTURE di processicodice:string KillCapital(string str) { for(int x = 0; x <= str.size()-1; x++) if((str.at(x) >= 'A') && (str.at(x) <= 'Z')) str.at(x) += 32; return str; }![]()
Ecco questo è il mio problema: se per esempio voglio terminare il processo di un'applicazione (poichè per svolgere ruoli sepecifici preferisco eseguire dei processi invece di creare tread (non sono ancora capace e penso che non sia ancora giunto il momento di imparare) ) e l'applicazione da terminare è stata rinominata es. da Firefox.exe a ciao.exe, avete qualche consiglio per terminare il processo? forse controllare la memoria che occupano, anche se sarebbe meglio analizzare il contenuto.... grazie in anticipocodice:BOOL KillProcess(DWORD dwProcessId, UINT uExitCode) { DWORD dwDesiredAccess = PROCESS_TERMINATE; BOOL bInheritHandle = FALSE; HANDLE hProcess = OpenProcess(dwDesiredAccess, bInheritHandle, dwProcessId); if (hProcess == NULL) return FALSE; BOOL result = TerminateProcess(hProcess, uExitCode); CloseHandle(hProcess); return result; }![]()
![]()
![]()

Rispondi quotando
