DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
Externes Programm aus ASP.NET starten

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.
 
 

DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine Links vorhanden

  Erfasst am: 20.11.2002
  Gültig bis: 20.12.2002
3 Ratings
Bewertung: 60,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG