[Windows] Kill Prozess



  • +fricky bist du vielleicht der Sohn von Kernighan oder Ritchie ?

    Sorry für unnötigen Beitrag, aber das soll ein Kompliment sein.



  • Eclipse++ schrieb:

    +fricky bist du vielleicht der Sohn von Kernighan oder Ritchie ?

    nein, ich bin nur der erfinder von C. aber diese beiden hunde haben meine idee geklaut.
    🙂



  • JustSomeCoder schrieb:

    Hab bei mir grad ein altes Stück Code gefunden:

    BOOL KillProcess(HWND hWnd)
    {
    	DWORD ThreadID, ProcessID; HANDLE hProc;
    	ThreadID = GetWindowThreadProcessId(hWnd, &ProcessID);
    	hProc = OpenProcess(PROCESS_ALL_ACCESS, TRUE, ProcessID);
    	return TerminateProcess(hProc, 0);
    }
    

    Hab grad keine Zeit mehr das so umzubaun dass du direkt nen process by name killen kannst, aber vielleicht hilft's dir schonmal weiter.

    soweit war ich leider schonmal...
    Ich habe die Funktion GetProcessId gefunden aber gcc will die Funktion nicht finden 👎



  • Hab grad mal schnell Google um dieses Problem bemüht, und bin auf das hier gestoßen:

    http://www.codeproject.com/KB/threads/killprocess.aspx

    Sollte eigentlich sein was du suchst, außer dass es in C++ ist aber das kannst du ja leicht ändern.



  • Ich habs jetzt! Uhralt, funktioniert aber 🙂

    http://www.physiology.wisc.edu/ravi/software/killproc/



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich glaub mit FindProcess() gings



  • Hier noch eine Funktion mit der man die Prozess ID durch den Prozess Namen bekommt:

    // GetPIDbyName by Melan
    int GetPIDbyName(TCHAR* name)
    {
    	HANDLE hProcessSnap;
    	PROCESSENTRY32 pe32;
    	hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
    	if(hProcessSnap == INVALID_HANDLE_VALUE)
    		MessageBox(0, TEXT("Snapshot could not be created!"), szAppName, MB_ICONERROR);
    	else
    	{
    		pe32.dwSize = sizeof( PROCESSENTRY32 );
    		Process32First( hProcessSnap, &pe32 );
    		do
    		{
    			if(!_tcscmp(pe32.szExeFile,name))
      			{
    				CloseHandle( hProcessSnap );
    				return pe32.th32ProcessID;
      			} 
    		}
    		while( Process32Next(hProcessSnap,&pe32) );
    	}
    	return 0;
    }
    


  • Verwende lieber "_tcsicmp" und beachte auch, dass Prozesse via "COM" gestartet werden können, dann haben diese den "ShortFileName" als Prozessnamen... also Dein Beispiel geht nur in einigen Fällen 😉



  • hi! ich suche so eine Funktion, mit der ich PID von Prozessnamen bekomme. Hab mit der Suche diesen Thread gefunden. Kann ich die Funktion oben nehmen oder was meinst du mit COM und ShortFileName? Kannst du mir zeigen, wie es immer geht?



  • Paulina schrieb:

    hi! ich suche so eine Funktion, mit der ich PID von Prozessnamen bekomme. Hab mit der Suche diesen Thread gefunden. Kann ich die Funktion oben nehmen oder was meinst du mit COM und ShortFileName? Kannst du mir zeigen, wie es immer geht?

    So:

    int GetPIDbyName(TCHAR* name)
    {
    	HANDLE hProcessSnap;
    	PROCESSENTRY32 pe32;
    	hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
    	if(hProcessSnap == INVALID_HANDLE_VALUE)
    		MessageBox(0, TEXT("Snapshot could not be created!"), NULL, MB_ICONERROR);
    	else{
    		pe32.dwSize = sizeof( PROCESSENTRY32 );
    		Process32First( hProcessSnap, &pe32 );
    		do{
    			if(!_tcsicmp(pe32.szExeFile, name)){
    				CloseHandle( hProcessSnap );
    				return pe32.th32ProcessID;
    			}
    		}
    		while( Process32Next(hProcessSnap, &pe32) );
    	}
    	return 0;
    }
    


  • aber Jochen hat doch geschrieben, er solle AUCH beachten. Also liegt es nicht nur an _tcsicmp oder?


Anmelden zum Antworten