Hi liebe Community,
ich habe aktuell folgenden Code, um die RAM-Auslastung eines Prozesses zu ermitteln:
Leider weicht dieser Wert deutlich von dem Wert aus dem Taskmanager ab.
So hat ein Programm laut Taskmanager ca. 21 MB ausgelagert, und mit dem o.g. Code werden mir ca. 30 MB angezeigt.
Im Taskmanager steht die Beschreibung "Arbeitsspeicher (privater Arbeitssatz)".
Deshalb habe ich auch die Methode
Auch mit anderen Methoden konnte ich die vom Taskmanager angezeigten 21 MB nicht erreichen.
Nach einigem googlen und durchstöbern bin ich dann auf WMI gestoßen, wo ich aber für meine Zwecke keine Denkanstöße gefunden habe.
Ich sollte evtl. dazu sagen, dass ich noch nie was mit WMI gemacht habe, es aber nicht scheue, da dies ja schon ein mächtiges Werkzeug ist.
Hat da jemand schon Erfahrung in diesem Thema und kann diese mit mir teilen?
Ich danke Euch
Edit:
Gerade selber herausgefunden.
Mit WMI bekomme ich den selben Wert wie im Taskmanager angezeigt.
1. Import
2. Auslesen
Zur Info, ich habe die ensprechenden Klassen und Namespaces mit dem Programm WMICodeCreator gefunden, habe es mal angehangen.
ich habe aktuell folgenden Code, um die RAM-Auslastung eines Prozesses zu ermitteln:
Leider weicht dieser Wert deutlich von dem Wert aus dem Taskmanager ab.
So hat ein Programm laut Taskmanager ca. 21 MB ausgelagert, und mit dem o.g. Code werden mir ca. 30 MB angezeigt.
Im Taskmanager steht die Beschreibung "Arbeitsspeicher (privater Arbeitssatz)".
Deshalb habe ich auch die Methode
PrivateMemorySize64
benutzt.Auch mit anderen Methoden konnte ich die vom Taskmanager angezeigten 21 MB nicht erreichen.
Nach einigem googlen und durchstöbern bin ich dann auf WMI gestoßen, wo ich aber für meine Zwecke keine Denkanstöße gefunden habe.
Ich sollte evtl. dazu sagen, dass ich noch nie was mit WMI gemacht habe, es aber nicht scheue, da dies ja schon ein mächtiges Werkzeug ist.
Hat da jemand schon Erfahrung in diesem Thema und kann diese mit mir teilen?
Ich danke Euch
Edit:
Gerade selber herausgefunden.
Mit WMI bekomme ich den selben Wert wie im Taskmanager angezeigt.
1. Import
2. Auslesen
VB.NET-Quellcode
- Try
- Dim searcher As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_PerfFormattedData_PerfProc_Process")
- For Each queryObj As ManagementObject In searcher.Get()
- Console.WriteLine("-----------------------------------")
- Console.WriteLine(queryObj("Name"))
- Console.WriteLine("-----------------------------------")
- Console.WriteLine("WorkingSetPrivate: {0}", queryObj("WorkingSetPrivate"))
- Next
- Catch err As ManagementException
- MessageBox.Show("An error occurred while querying for WMI data: " & err.Message)
- End Try
Zur Info, ich habe die ensprechenden Klassen und Namespaces mit dem Programm WMICodeCreator gefunden, habe es mal angehangen.
Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „TRiViUM“ ()