Häufig ist Funktionalität in ein COM Objekt gekapselt. Dieses lässt sich dann einfach mit Creatobject instanzieren. In ASP .NET existieren Klassen die mit New instanziert werden. Com Objekte werden über Wrapper Klassen eingebunden. Manche Dinge lassen sich aber nach wie vor nur einem klassischen Exe Programm erledigen. So z.B. Batch Files oder manche Systemtools.
Mit ASP lässt sich das nur sehr schwierig umsetzten. Mit ASP .NET geht das etwas leichter, da es eigentlich vollen Zugriff auf das komplette Framework besitzt.
Die Prozess Klasse
Die Klasse findet sich im
Systems.Diagnostic Namensraum.
Imports System.Diagnostics.Process |
Mit der Prozess-Komponente erhält man Zugriff auf einen Prozess, der auf einem Computer ausgeführt wird. Ein Prozess ist also das Programm. Dieser kann wiederum mehrere Threads ausführen. Ein Thread ist die Basiseinheit, für die das Betriebssystem Prozessorzeit reserviert. Ein Thread kann beliebige Teile des Prozesscodes ausführen. Dies umfasst auch Teile, die derzeit von einem anderen Thread ausgeführt werden.
Die Prozess-Komponente ist ein nützliches Tool für das Starten, Anhalten, Steuern und Überwachen von Anwendungen. Mit Hilfe der Prozess-Komponente können Sie eine Liste der aktuellen Prozesse abrufen. Sogar der Zugriff auf Systemprozesse ist damit möglich. Nachdem der Initialisierung der Klasse können alle Informationen eines laufenden Prozesses abgefragt werden, wie die Gruppe von Threads, die geladenen Module. Dadurch erfährt man die auch die Größe des vom der DLL oder Exe beanspruchten Speicherplatzes.
Systemprozesse werden im System durch die eindeutige Prozess-ID bezeichnet. Wie viele Windows-Ressourcen kann ein Prozess auch über sein Handle behandelt werden. Selbst nach Beendigung des Prozesses ist der Handle noch gültig. Dadurch kann man administrativen Informationen des Prozesses abrufen, wie den ExitCode (meist 0 bei Erfolg oder ein Fehlercode ungleich 0) und ExitTime. Handles sind eine besonders nützliche Ressource. Deshalb sind Handle-verluste gravierender Speicherverluste.
Damit lässt sich also aus einer ASP.NET Seite Notepad am Server aufrufen- Über den zweiten Parameter in Start lassen sich Parameter mitgeben. Bei Notepad die zu öffnende Datei.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Proc As Process = New Process() Proc.EnableRaisingEvents = False Proc.Start("notepad.exe", "c:oot.ini") End Sub |
Dieses Beispiel ist aus mehreren Gründen nicht besonders sinnvoll. Notepad wird am Server als Task ohne User Interface gestartet. Es wird über den ASP.NET Account mit stark eingeschränkten Rechten aufgerufen. Es besteht keine Möglichkeit den Prozess zu stoppen bzw. er läuft auch nicht ab.
Wenn der Prozess Handle noch greifbar ist, lässt er sich über Kill beenden. Der Rückgabewert wird über ExitCode ermittelt.
So könnte man noch eine weile in den Tiefen des Systems wühlen. Die Prozess Klasse gibt dafür einiges her. Speziell das starten von Threads und das überwachen derselben ist auch für den ASP.NET Entwickler machbar.