prozesse anhand ihrer "pid" killen... ganze pfade der prozesse anzeigen
-
hallo, ich poste diesen beitrag mal hier da ich
in der win32-konsole programmiere!ich habe diese codes zum anzeigen und "killen" von prozessen
gefunden:anzeigen:
#include <windows.h> #include <tlhelp32.h> #include <iostream> using namespace std; typedef BOOL (WINAPI *TH32_PROCESS) (HANDLE hSnapShot, LPPROCESSENTRY32 lppe); static TH32_PROCESS pProcess32First = NULL; static TH32_PROCESS pProcess32Next = NULL; int main() { PROCESSENTRY32 pe32 = { 0 }; HANDLE hSnapshot = NULL; HINSTANCE hDll = LoadLibrary("kernel32.dll"); pProcess32First=(TH32_PROCESS)GetProcAddress(hDll,"Process32First"); pProcess32Next=(TH32_PROCESS)GetProcAddress(hDll,"Process32Next"); hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if (hSnapshot != (HANDLE) -1) { pe32.dwSize = sizeof (PROCESSENTRY32); int proc_cnt=0,thrd_cnt=0; if (pProcess32First (hSnapshot, &pe32)) { cout<<"Name\t\t\t\tThreads"<<endl<<endl; do { thrd_cnt+=pe32.cntThreads; proc_cnt++; cout<<" "<<"\t\t\t\t"<<pe32.cntThreads <<"\r"<<pe32.szExeFile<<endl; } while(pProcess32Next (hSnapshot, &pe32)); } cout<<endl <<"Threads: "<<thrd_cnt<<endl <<"Prozesse: "<<proc_cnt<<endl; CloseHandle (hSnapshot); } return 0; }
-beenden:
#include <windows.h> #include <tlhelp32.h> void KillProcess(DWORD); main() { HANDLE snapshot; PROCESSENTRY32 pe; snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL); pe.dwSize=sizeof(pe); if(Process32First(snapshot, &pe)) { do { if(!strcmp(pe.szExeFile, "WORDPAD.EXE")) KillProcess(pe.th32ProcessID); }while(Process32Next(snapshot,&pe)); } CloseHandle(snapshot); } void KillProcess(DWORD ProcessID) { HANDLE process; DWORD ExitCode; process=OpenProcess(PROCESS_TERMINATE,FALSE,ProcessID); GetExitCodeProcess(process,&ExitCode); TerminateProcess(process,ExitCode); CloseHandle(process); }
das klappt auch soweit gut, doch es reicht mir nicht aus
einen prozess anhand seines "namens" zu killen, da dieser ja auch
öfters vergeben sein kann.wie kann ich die "pid" der prozese herrausfinden und sie anhand der
"pid" killen?danke schonmal!
Babelduo
p.s: ich kann mich daran erinnern das der code zum anzeigen der prozesse
unter windows98 die ganzen pfade der prozesse angezeigt hat! wieso ist
das bei mir unter win2000 nicht so? und wie ist es möglich unter win2k
die ganzen pfade der prozesse angezeigt zu bekommen?
-
Na einfach schauen ob es der Name ist und dann die PID holen und beenden.
if (pe32.szExeFile == "Test.exe") { DWORD nPID = proc.th32ProcessID; //Callback is ne' PID hSnapshot = OpenProcess( PROCESS_TERMINATE, FALSE, nPID ); TerminateProcess( hSnapshot, 0 ); }
Gruß
:: NoName ::
-
:: NoName :: schrieb:
if (!strcmp(pe32.szExeFile, "Test.exe")) { DWORD nPID = proc.th32ProcessID; //Callback is ne' PID hSnapshot = OpenProcess( PROCESS_TERMINATE, FALSE, nPID ); TerminateProcess( hSnapshot, 0 ); }
Aber mit strcmp
-
yo danke das klappt schon perfekt!
aber wisst ihr auch wie ich den vollen pfade der prozesse
angezeigt bekommen kann?danke, Babelduo