Beschreibung eines Prozesses auslesen



  • Guten Abend,

    ich benötige nach langer Suche endlich mal die Hilfe von erfahrener oder etwas fortgeschrittener Programmierer. Erst wollte ich mich hier gar nicht erst melden, die Regeln haben mir etwas Angst gemacht, aber ich versuche mal mein Glück. Seid bitte nicht so hart mit mir, ich bin leider noch ein Frischling.

    Aus irgendeinem Grund finde ich in der Struktur(?)"PROCESSENTRY32" keinen Member(?) für die Auslesung der Beschreibung vom Prozess. Ich habe hier einen schönen Code, welcher alle Prozesse ausliest(ich entschuldige mich für die länge des Codes, die relevanten Zeilen sind 32 - 38 vermute ich):

    #include "stdafx.h"
    #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);
    	}
    
    	getchar();
    }
    

    Dort sieht man die Whileschleife welche alle Prozesse in einer Konsole ausgibt. Damit ihr den Code nicht testen müsst und eventuell alles verbildlichen könnt, so sieht das aus(Konsolenausschnitt):

    https://i.gyazo.com/46fe984edd2879a3ed91b723dd69ca55.png

    Mein Ziel ist es nun, statt die Threads anzeigen zu lassen(Zeile 36) die Beschreibung vom Prozess anzuzeigen. Nur leider habe ich nur diese Members der Struktur gefunden:

    DWORD dwSize;
    DWORD cntUsage;
    DWORD th32ProcessID;
    ULONG_PTR th32DefaultHeapID;
    DWORD th32ModuleID;
    DWORD cntThreads;
    DWORD th32ParentProcessID;
    LONG pcPriClassBase;
    DWORD dwFlags;
    TCHAR szExeFile[MAX_PATH];

    Habe ich vielleicht etwas übersehen?
    Ich hoffe, ich habe die Frage richtig gestellt und hoffentlich ist sie auch gut lesbar!



  • Falsches Forum -> WinAPI



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) 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.



  • Naja, Prozesse haben keine Beschreibung. Das was diverse Tools in der "Beschreibung" Spalte anzeigen kommt soweit ich weiss aus der "version resource" des .exe Files. Eine Möglichkeit wäre vermutlich das direkt aus dem Speicher des Prozesses auszulesen. Ist aber alles andere als einfach.

    D.h. ich würde erstmal gucken ob du rausbekommst wie man den absoluten Pfad zur .exe bekommt. Dann könntest du die Beschreibung direkt aus dem .exe File auslesen.



  • Das ist eine super Idee, hustbaer. Dieser Anlauf hat mir gefehlt. Ich habe nun "VERSIONINFO" gefunden und werde mich damit etwas rumschlagen, ich melde mich auf jeden Fall wieder, falls ich Hilfe brauche!






Log in to reply