prozessname zur PID



  • hi
    ich möchte den prozessnamen des aktuellen fensters finden.
    an die pid komme ich schonmal mit GetWindowThreadProcessId(GetForegroundWindow(),0).

    wie kann ich aber den prozessnamen zu der pid ermitteln?

    gruß afds



  • du könntest einfach alle Prozesse durchgehen und die PID vergleichen

    greetz KN4CK3R



  • gibt es keine andere lösung?



  • OpenProcess!?



  • ok habe jetzt versucht über open process den handel zu bekommen und dann mit QueryFullProcessImageName den namen zu bekommen......
    allerdings gibt der compiler mir immer einen fehler.
    windows.h ist doch der richtige header?

    code

    #include<windows.h>
    #include<iostream>
    
    using namespace std;
    int main(){
        DWORD id=0,oldid;
        while(1){
    
            //getid if new then name
            oldid=id;
            id=GetWindowThreadProcessId(GetForegroundWindow(),0);
            if(id==oldid){
    
                //gethandelofwnd if not null continue
                HANDLE h=OpenProcess(0,0,id);
                if(h!=NULL){}
    
                    LPTSTR name = new CHAR[1024];
                    DWORD size= 1024;
                    if(QueryFullProcessImageName(h,0,name,&size)){
                        cout<<name<<'\n';
                    };
                    //close handel
                    CloseHandle(h);
                };
            };
            //wait
            Sleep(50);
        }
    }
    

    error

    21|error: `QueryFullProcessImageName' was not declared in this scope|
    

    was mache ich falsch?



  • ein paar fehler im code beseitigt aber das problem bleibt....

    #include<windows.h>
    #include<Winbase.h>
    #include<iostream>
    
    using namespace std;
    int main(){
        DWORD id=0,oldid;
        while(1){
    
            //getid if new then name
            oldid=id;
            id=GetWindowThreadProcessId(GetForegroundWindow(),0);
            if(id==oldid){
    
                //gethandelofwnd if not null continue
                HANDLE h=OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION,0,id);
                if(h!=NULL){
    
                    LPTSTR name = new CHAR[1024];
                    DWORD size= 1024;
                    if(QueryFullProcessImageName(h,0,name,&size)){
                        cout<<name<<'\n';
                    };
                    //close handel
                    CloseHandle(h);
                };
            };
            //wait
            Sleep(50);
        }
    }
    


  • oben ein #define _WIN32_WINNT 0x0600 rein. Funktioniert aber erst ab Vista die Funktion.

    greetz KN4CK3R



  • bekomme immernoch den fehler......

    btw habe win7



  • Du solltest einen sinnvollen Compiler verwenden, welcher auch ein aktuelles PSDK hat.
    Oder verwende alte Funktionen, wie GetModuleFileNameEx!


Anmelden zum Antworten