Bild vergrößern
937
625
http://img4.magnus.de/Windows-Prozessverarbeitung-mit-NET-und-Visual-Basic-2008-r937x625-C-3bce8fbb-7700755.jpg
Prozesse unter der Lupe
Windows-Prozessverarbeitung mit .NET und Visual Basic 2008
Um in eigenen Anwendungen Prozessinformationen abzurufen und entsprechend dem Task-Manager zu verarbeiten, stellt das .NET Framework über den Namespace System.Diagnostics das erforderliche Mittel bereit. Damit programmieren Sie ein leistungsfähigeres Werkzeug zur Prozessanalyse, als dies der Task-Manager bietet.
Windows führt eines oder mehrere Programme im Multitasking-Betrieb nebeneinander aus. Jede Anwendung greift nach Bedarf auf Module und auch Threads zurück. Welche Prozesse aktiv sind und welche Rechenzeit diese verbrauchen, verrät in Windows der Task-Manager.
Die Prozessanalyse informiert über aktuell ausgeführte Programme und Module. Als Momentaufnahme (Snapshot) sind Speicherinformationen zu ermitteln, die fortlaufend zu aktualisieren sind. Die Prozessinformationen sind nicht dauerhaft gültig, da gestartete Programme neue Prozesse nachladen und auch beenden.
Auch Prozesse führen Threads aus oder erfordern zusätzliche Module. Daher ändert sich fortlaufend der Speicherbedarf einzelner Prozesse. Über den Task-Manager beenden Sie Prozesse oder führen neue aus.
Der Task-Manager zeigt allerdings nicht im Detail, welcher Prozess weitere Module und Threads nutzt und welche Module er nachlädt. Auch genauere Auskunft wie zu Versionsinformationen, Ausführungszeiten oder zur virtuellen und/oder physikalischen Speicherbelegung der einzelnen Prozesse erhalten Sie hier nicht.
Projektaufbau
Das .NET Framework bietet einen nahezu unüberschaubaren Funktionsumfang. Der Namespace System.Diagnostics liefert Methoden und Eigenschaften, um Prozesse in eigenen Anwendungen genau zu analysieren, nachzuladen oder zu beenden. Wie Sie den Namespace einsetzen, zeigt das Beispiel Process Analyzer (Quelltext und Programm auf der Heft-DVD).
Sie laden das Beispielprojekt über die Solutiondatei Process Analyzer.sln in die Entwicklungsumgebung von Visual Studio 2008. Das Projekt, dessen Dateien Sie in der Tabelle überblicken, setzt sich aus mehreren Klassen und Quelldateien zusammen. Das Programm starten Sie mit Process.exe, wozu lediglich das .NET Framework 3.5 [SP1] auf Ihrem Rechner eingerichtet sein muss.
Prozesse analysieren
Starten Sie das Analyseprogramm, so zeigt es den Willkommensbildschirm, fragt automatisch alle Informationen zu den ausgeführten Prozessen ab und gibt sie in der Strukturansicht aus. Während der Analyse wird ein Dialog mit einer Fortschrittsanzeige eingeblendet. Ist die Analyse abgeschlossen, gelangen Sie in den Hauptdialog der Anwendung.
Die Prozessanalyse erfolgt über die Methode BuildProcessStructure des Steuerelementes. Die Methode strukturiert die namentliche Ausgabe der Prozesse mit TreeCtl. Wer Teilinformationen auszugeben wünscht, bestimmt dies über die Eigenschaften des Steuerelementes per Optionendialog.
Die Informationsausgabe versorgt die Knoten entsprechend ihrem Inhalt mit Bildsymbolen. Der Hauptknoten der Strukturansicht erhält den Namen Prozesse und weist die Bildsymbole Pics.Processes zu.
Die Methode BuildProcessStructure löscht zunächst den Inhalt der Strukturansicht, damit wiederholte Aufrufe keine bestehenden Inhalte erweitern, sondern erneuern. Anschließend wird der Hauptknoten Prozesse eingerichtet.
Dabei wird auch die Hauptknotenfarbe über die Eigenschaft MainNodeColor berücksichtigt. Die Prozessinformationen ermittelt anschließend die Methode EnumerateProcesses, um danach den Hauptknoten aufzuklappen und der Strukturansicht anzufügen.
Codebeispiel: