Hier mal ein kleines Tut über das Starten von Processen in C#
Ich möchte mich nicht mit langen Einleitungen herumplagen, deswegen fangen wir am besten gleich an.
Als erstes müssen wir mal System.Diagnostics einbinden, in der sich die Klassen zum Starten von Processen befinden
using System.Diagnostics;
Dannach brauchen wir noch jeweils eine Instanz von Process und ProcessStartInfo
Kurz zur Erklärung:
- Process: hiermit wird der Process eigentlich gestartet und kann auch überwacht werden
- ProcessStartInfo: Dies wird beim Start an Process übergeben und beinhaltet alle Informationen
zu dem Process den wir starten wollen (Pfad, Argumente, ...)
myprocess = new Process();
info = new ProcessStartInfo();
Nun müssen wir noch die Attribute setzeN:
FileName: gibt den Pfad der *.exe Datei an die gestartet werden soll
info.FileName = path;
WorkingDirectory: gibt den Ordner an in dem die *.exe gestartet werden soll, standart ist hier der Ordner in dem euer Programm gestartet wurde, also unbedingt setzen da sonst manche Programme bestimmte Dateien nicht finden
info.WorkingDirectory = dir;
Arguments: Wie der Name schon sagt kann man hier Argumente an dei *.exe übergeben (z.B.: hl.exe -game cstrike)
info.Arguments = args;
Nun zum eigentlichen Starten:
Hier übergeben wir Process die Informationen und Starten mit Start() die *.exe
myprocess = Process.Start(info);
Hier könnt ihr noch eine Ereignisbehandlung einbauen, diese wird ausgelöst wenn der gestartete Process beendet wird
myprocess.Exited += new EventHandler(this.ProcessExited);
Dies ist nötig um das Ereignis auslösen zu lassen
myprocess.EnableRaisingEvents = true;
myprocess.SynchronizingObject = this;
Hier wird darauf gewartet das der Process beendet wird. Es empfiehlt sich dieses in einem extra Thread oder mithilfe von Application.DoEvents() zu machen.
myprocess.WaitForExit();
Hier noch der Prototyp der Funktion die das Beenden des Processes behandeln soll
void ProcessExited(object s, EventArgs e)
{
...
}
Wie ihr seht ist es recht einfach ein externes Proramm in C# zu starten. Falls Fragen aufgetaucht sind, schickt mir eine E-Mail an br3z3l@gmail.com