T
Hallo,
ich möchte in meinem Programm eine Liste aller laufenden Systemprozesse in eine CListCtrl schreiben.
Das Problem ist, dass ich nicht weiß, wie man die Prozesse auslesen kann.
Angeblich mit EnumWindows, aber da blicke ich leider überhaupt nicht durch.
Es gibt jedoch in Windows ein Programm im System32 ordner: Tasklist.exe -FO CSV >taskliste.txt liefert folgendes Ergebniss in der Datei taskliste.txt:
"Abbildname","PID","Sitzungsname","Sitz.-Nr.","Speichernutzung"
"System Idle Process","0","Console","0","20 K"
"System","4","Console","0","216 K"
"smss.exe","292","Console","0","344 K"
"csrss.exe","352","Console","0","3.188 K"
"winlogon.exe","376","Console","0","1.000 K"
"services.exe","420","Console","0","3.060 K"
"lsass.exe","432","Console","0","1.356 K"
"svchost.exe","608","Console","0","3.220 K"
"svchost.exe","644","Console","0","19.276 K"
"StyleXPService.exe","672","Console","0","2.348 K"
"svchost.exe","724","Console","0","1.840 K"
"svchost.exe","748","Console","0","3.248 K"
"spoolsv.exe","864","Console","0","4.556 K"
"explorer.exe","1076","Console","0","19.368 K"
"AVGNT.EXE","1256","Console","0","3.900 K"
"ctfmon.exe","1264","Console","0","2.132 K"
"AVGUARD.EXE","1324","Console","0","5.748 K"
"ati2evxx.exe","1336","Console","0","1.268 K"
"AVWUPSRV.EXE","1368","Console","0","1.060 K"
"inetinfo.exe","1408","Console","0","9.712 K"
"mdm.exe","1428","Console","0","3.204 K"
"svchost.exe","1512","Console","0","3.448 K"
"OUTLOOK.EXE","972","Console","0","15.056 K"
"WINWORD.EXE","1124","Console","0","17.612 K"
"iexplore.exe","1248","Console","0","18.212 K"
"cmd.exe","548","Console","0","1.468 K"
"tasklist.exe","248","Console","0","4.144 K"
Das enthält alles was ich brauche (Name, PID, Speicher).
Leider kriege ich das über ShellExecute nicht zum laufen, um dann die Datei auszulesen. Es geht zwar sicherlich auch direkt aus dem System raus, aber diese Methode gebe ich jetzt dann auf, da mir immer ein Code-Fragment gepostet wird, mit dem ich als Einsteiger gar nix (oder besser: weniger als nix) anfangen kann.
Bei ok=ShellExecute... kriege ich zwar in ok ein true, aber die Datei wird nicht angelegt, warscheinlich ist mit den Parametern irgendwo der Wurm drin:
bool ok;
ok=ShellExecute(m_hWnd,"open","tasklist.exe","-FO CSV >"+m_workdir+"taskliste.txt",0,SW_SHOW);
Wegen der CListCtrl:
Der Text mit CListCtrl ist mir zwar klar, aber wie man Icons oder Bitmaps vor die Einträge der ersten Spalte kriegt noch nicht so ganz. (Anderes CListCtrl)
Noch was:
GetDiskFreeSpaceEx( str[zaehler-65] + ":", &m_FreeBytes, &m_TotalBytes, NULL );
s.Format( "%u MB", m_FreeBytes.QuadPart/(1024*1024));
t.Format( "%u MB", m_TotalBytes.QuadPart/(1024*1024));
wobei in der .h datei
ULARGE_INTEGER m_FreeBytes;
ULARGE_INTEGER m_TotalBytes;
steht.
Wegen dem ULARGE_INTEGER: möchte aus m_FreeBytes und m_TotalBytes einen Wert errechnen, zu wieviel % die HDD belegt ist. Diesen möchten ich dann in ein CListCtrl schreiben. (dafür muss es dann CString oder int sein oder?)
HINWEIS: BIN EINSTEIGER !!!
mfg
trequ