Wichtige C#-Klassen: Process

Mit der Klasse Process können Sie ein fremdes Programm starten oder eine Datei öffnen. Beim Öffnen einer Datei verhält sich die Klasse so, wie wenn Sie die Datei über den Explorer starten würden, d. h. entweder wird das dafür vorgesehene Standardprogramm mit der Datei oder der Dialog für unbekannte Dateien geöffnet. Die Klasse Process befindet sich im Namensraum System.Diagnostics.
Über die Eigenschaft StartInfo kann das ProcessStartInfo-Objekt abgerufen werden, welches Informationen über die auszuführende Datei enthält. Über die Eigenschaft FileName wird der Dateiname der zu ausführenden Datei angegeben. Hierbei muss auch der Pfad angegeben werden, sofern sich die Datei nicht im aktuellen Arbeitsverzeichnis oder im Windows „system32“-Ordner befindet. Die Eigenschaft Arguments legt die Argumente für das Programm fest. Mit Hilfe der Eigenschaft WindowStyle kann festgelegt werden, in welchem Stil / Aussehen das Programm geöffnet werden soll: Normal-Modus (Normal) minimiert (Minimized) oder maximiert (Maximized). Diese Werte befinden sich in der Enumeration ProcessWindowStyle.
Die Funktion Start() der Process-Klasse ruft den „Prozess“ auf (oder einfach gesagt: Startet die Datei). Mit Hilfe der Eigenschaft HasExited kann abgefragt werden, ob das Programm bereits wieder geschlossen wurde. Natürlich können wir den Prozess auch beenden: Hierfür benötigen wir die Funktion Kill(). Falls Sie ein Ereignis auslösen wollen sobald das Programm beendet wurde, können Sie ein Ereignis auf das Event Exited registrieren.
Bei einfachen Aufrufen zum Starten eines Programms erscheint der oben genannte Weg etwas kompliziert. Deshalb können wir auch die statische Funktion Start() der Process-Klasse aufrufen, welcher wir als Parameter den Dateinamen und bei Bedarf noch zusätzlich die Argumente übergeben. Die Funktion gibt das erstellte Process-Objekt zurück, wodurch eine Steuerung des Prozesses (z. B. Beenden oder prüfen ob die Anwendung noch geöffnet ist) immer noch möglich ist.

Program.cs

Process oProcess = new Process();

oProcess.StartInfo.FileName = "cmd.exe";
oProcess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
oProcess.StartInfo.Arguments = "/K ping localhost";

oProcess.Start();

Console.WriteLine("Bitte drücken Sie eine Taste um das Programm zu beenden ...   ");
Console.ReadKey();
if (oProcess.HasExited)
	Console.WriteLine("Das Programm wurde bereits beendet!");
else
{
	oProcess.Kill();
	Console.WriteLine("Das Programm wurde beendet!");
}

// Kurz-Form möglich (für einfache Start-Vorgänge): Process.Start("cmd.exe", "/K ping localhost");

Console.ReadKey();
Download

LinksRechts