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
-
der Code ist vollkommen richtig.
Der Compiler findet die iostream.h nicht.
Dadurch werden alle angezeigten Fehler verursachtProbier 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 verursachtSein 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.cppwenn 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