Prozesse auslesen
-
Ich bräuchte einen kleinen Anstoß (ein paar Funktionen, ein Link zur MSDN, ein Tutorial, etc.):
Ich möchte alle laufenden Prozesse auslesen.
und/oder bei starts und beendungen von prozessen benachrichtigt werden.Anschließend möchte ich noch die Kernelzeit/Userzeit auslesen.
PS.: ich möchte dazu aber kein SDK herunterladen müssen.
mfg (c)h
-
Mit CreateToolhelp32Snapshot() kannst du einen Schnappschuss der momentan laufenden Prozessen machen. Die MSDN hat dazu sogar ein Beispiel: http://msdn.microsoft.com/library/en-us/perfmon/base/taking_a_snapshot_and_viewing_processes.asp
Um rauszufinden, wann neue Prozesse starten, könntest du einen systemweiten Apihook für CreateProcess() installieren. Das könnte sich allerdings als etwas trickreich herausstellen, vielleicht gibts noch einen besseren Weg.
-
chille07 schrieb:
Ich möchte alle laufenden Prozesse auslesen.
Siehe anderes Posting...
chille07 schrieb:
und/oder bei starts und beendungen von prozessen benachrichtigt werden.
Gibt es nicht...
chille07 schrieb:
Anschließend möchte ich noch die Kernelzeit/Userzeit auslesen.
GetProcessTimes
chille07 schrieb:
PS.: ich möchte dazu aber kein SDK herunterladen müssen.
Wenn Du mit Windows Programmieren willst, brauchst Du das Windows.SDK (oder PSDK)
-
Jochen Kalmbach schrieb:
chille07 schrieb:
PS.: ich möchte dazu aber kein SDK herunterladen müssen.
Wenn Du mit Windows Programmieren willst, brauchst Du das Windows.SDK (oder PSDK)
Wenn ich mit Windows programmieren will, verwende ich MVS6.0 und anscheinend ist da die sogenannte "PSDK" ohnehin dabei, weil ich damit mit Windows programmieren kann.?
Ich dachte an was SDKs die man sich gesondert herunterladen muss, etc. weil ich hab wohl ein Tutorial gefunden, aber da benötigt man ein solches. "CTL_CODE" ist bei mir nicht definiert...
Ich werde mich mal mit dem MSDN-Artiel beschäftigen. Ich sag mal danke!
mfg (c)h
-
chille07 schrieb:
Wenn ich mit Windows programmieren will, verwende ich MVS6.0 und anscheinend ist da die sogenannte "PSDK" ohnehin dabei, weil ich damit mit Windows programmieren kann.?
Genau. Diese Version ist aber schon 8 Jahre alt und enthält somit kaum Funktionen, die nach NT4 rausgekommen sind...
-
solche - noch nicht vorhandene - Funktionen wären zum Beispiel?
mfg (c)h
-
z.b OpenThread();
#include <windows.h> #include <tlhelp32.h> #include <iostream> using namespace std; BOOL ProcessList() { HANDLE hProcessSnap = NULL; BOOL bRet = FALSE; PROCESSENTRY32 pe32 = {0}; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) return (FALSE); // Fill in the size of the structure before using it. pe32.dwSize = sizeof(PROCESSENTRY32); // Walk the snapshot of the processes, and for each process, // display information. if (Process32First(hProcessSnap, &pe32)) { do { cout << "PID\t" << pe32.th32ProcessID << '\t' << pe32.szExeFile << '\n'; } while (Process32Next(hProcessSnap, &pe32)); bRet = TRUE; } else bRet = FALSE; // could not walk the list of processes // Do not forget to clean up the snapshot object. CloseHandle (hProcessSnap); return (bRet); } int main() { ProcessList(); return 0; }klar kann man sich ne funktion bauen die überprüft ob ein prozess beendet / gestartet wurde.
-
http://www.codeproject.com/threads/procmon.asp
funktioniert gut - zeit dafür nen ofstream in 'ne textdatei - ...
-
r0 schrieb:
http://www.codeproject.com/threads/procmon.asp
funktioniert gut - zeit dafür nen ofstream in 'ne textdatei - ...
ja, genau das hat bei mir nicht funktioniert...
aber jetzt gehts ( http://msdn.microsoft.com/library/en-us/perfmon/base/taking_a_snapshot_and_viewing_processes.asp war sehr hilfreich )
mfg (c)h
-
chille07 schrieb:
solche - noch nicht vorhandene - Funktionen wären zum Beispiel?
Wenn Du sie verwenden willst, wird es Dir auffallen...
Nur mal ein kleiner Auszug aus der Prozess/Threads Ketegorie: z.B. OpenThread, GetGuiResources, GetProcessIoCounters, GetThreadIOPendingFlag, SetThreadStackGuarantee, Fls*