Fehlerhafter Script um Prozesse anzuzeigen



  • Hi,

    Habe einen Script gefunden der mir alle Prozesse und Threads anzeigen soll die im Moment so laufen (im Prinzip etwas ähnliches wie der Taskmanager). Als ich den Script im Compiler eingegeben habe, habe ich beim Debuggen diverse Errormeldungen bekommen. Woher kommt das? der Script müsste eigentlich funktionieren...
    Kann sich den jemand mal anschauen?^^

    #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);  
       } 
    
       cin.get(); 
       return 0; 
    }
    


  • wenn du ein CMD Fenster aufmachst, kannst du mit dem Befehl "tasklist" viel mehr erreichen

    Description:
        This command line tool displays a list of application(s) and
        associated task(s)/process(es) currently running on either a local or
        remote system.
    
    Parameter List:
       /S     system           Specifies the remote system to connect to.
    
       /U     [domain]user    Specifies the user context under which
                               the command should execute.
    
       /P     [password]       Specifies the password for the given
                               user context. Prompts for input if omitted.
    
       /M     [module]         Lists all tasks that have DLL modules loaded
                               in them that match the given pattern name.
                               If the module name is not specified,
                               displays all modules loaded by each task.
    
       /SVC                    Displays services in each process.
    
       /V                      Specifies that the verbose information
                               is to be displayed.
    
       /FI    filter           Displays a set of tasks that match a
                               given criteria specified by the filter.
    
       /FO    format           Specifies the output format.
                               Valid values: "TABLE", "LIST", "CSV".
    
       /NH                     Specifies that the "Column Header" should
                               not be displayed in the output.
                               Valid only for "TABLE" and "CSV" formats.
    
       /?                      Displays this help/usage.
    
    Filters:
        Filter Name     Valid Operators           Valid Value(s)
        -----------     ---------------           --------------
        STATUS          eq, ne                    RUNNING | NOT RESPONDING
        IMAGENAME       eq, ne                    Image name
        PID             eq, ne, gt, lt, ge, le    PID value
        SESSION         eq, ne, gt, lt, ge, le    Session number
        SESSIONNAME     eq, ne                    Session name
        CPUTIME         eq, ne, gt, lt, ge, le    CPU time in the format
                                                  of hh:mm:ss.
                                                  hh - hours,
                                                  mm - minutes, ss - seconds
        MEMUSAGE        eq, ne, gt, lt, ge, le    Memory usage in KB
        USERNAME        eq, ne                    User name in [domain]user
                                                  format
        SERVICES        eq, ne                    Service name
        WINDOWTITLE     eq, ne                    Window title
        MODULES         eq, ne                    DLL name
    
    Examples:
        TASKLIST
        TASKLIST /M
        TASKLIST /V
        TASKLIST /SVC
        TASKLIST /M wbem*
        TASKLIST /S system /FO LIST
        TASKLIST /S system /U domain\username /FO CSV /NH
        TASKLIST /S system /U username /P password /FO TABLE /NH
        TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running"
    


  • dawa85 schrieb:

    wenn du ein CMD Fenster aufmachst, kannst du mit dem Befehl "tasklist" viel mehr erreichen

    ... Und was ist, wenn er die Datein weiterverarbeiten möchte?
    Da ist etwas natives doch mit Sicherheit besser als irgendein Systemaufruf.

    @Vermillion:
    Fehlermeldungen wären hilfreich 😉



  • Das mit Tasklist ist eine gute Idee allerdings sollten die ausgeführten Programme gezielt beendet werden können und dann später auch in einer SQL oder ODBC Datenbank eingelesen und ausgewertet werden.

    EDIT:
    Hier der Screent

    http://s3.directupload.net/images/071114/temp/73yckygm.jpg



  • der Code ist vollkommen richtig.

    Der Compiler findet die iostream.h nicht.
    Dadurch werden alle angezeigten Fehler verursacht

    Probier mal die Datei in dateiname.cpp umzubennen und erneut zu kompilieren dann könnte es gehn 😉



  • dawa85 schrieb:

    der Code ist vollkommen richtig.

    Dir fehlt die iostream.h
    Dadurch werden alle angezeigten Fehler verursacht

    Sein Code ist eventuell richtig; aber iostream.h ist definitiv falsch.
    Im aktuellen Standard heißt es <iostream> und nicht <iostream.h>.

    Ich denke eher, dass es an der Dateiendung liegt.
    .c interpretieren manche Compiler als C-Code, wo es kein iostream etc. gab.

    Ändere bitte mal die Endung in .cpp und versuche es noch einmal.



  • Und wie mach ich die? C++ ist nicht umbedingt meien stärke aber wenn ich bei isostream das .h hinzufüge verschwinden einige aber nicht alle Errormeldungen.



  • Vermillion schrieb:

    Und wie mach ich die? C++ ist nicht umbedingt meien stärke aber wenn ich bei isostream das .h hinzufüge verschwinden einige aber nicht alle Errormeldungen.

    nein <iostream> so lassen das ist richtig.
    Nur die Dateiendung der Datei die du kompilierst von .c nach .cpp ändern dann findet der Copmiler die iostream.h



  • Die Datei ist eine .dep Datei. Aber dann liegts evtl. daran das ich nen "falschen" Compiler verwende? nehme lcc.

    hier ein Screen:
    http://s2.directupload.net/images/071114/temp/z478j7jh.jpg



  • @Vermillion
    Zeige deine Fehlermeldungen. Sollen wir denn hier raten?



  • Braunstein schrieb:

    @Vermillion
    Zeige deine Fehlermeldungen. Sollen wir denn hier raten?

    In meinem zweiten Post sind die Fehlermeldungen und in dem Post über dir das Verzeichnis mit den Dateien o.O



  • in der Datei mit den Fehlermeldungen steht was von einer:
    c:\testprocesss.c in der obersten Zeile. Daraus machst du:
    c:\testprocesss.cpp

    wenn es dann immer noch nicht geht dann probier in deiner LCC Entwicklungsumgebung ein C++ Projekt anzulegen. Kein C Projekt. Aber viel dazu sagen kann ich nich, da ich die Software nicht kenne



  • Was benutzt du denn? Eventuell wäre es auch einfacher für mich einfach den Compiler zu wechseln.

    Habs jetzt nochmal versucht mit dem umbennen dann kommt aber nur das raus:
    http://s3.directupload.net/images/071115/temp/6xpsq89p.jpg


Anmelden zum Antworten