Ausführen von externen Programmen

IRQ

Mitglied
Hi @ll,

ich hab eine triviale und eine etwas kompliziertere Anfrage.
1. Wie kann ich aus einem C# Programm ein anderes Programm starten? Ich konnte dazu leider nichts finden.

2. Wie kann ich aus einer C# Windowsanwendung eine Konsolenapplikation starten? Was ich machen will: Ich hab ein Windowsprogramm zum Mailversand erstellt. Nun soll man das Programm auch über Kommandozeilenparamter starten. Dann soll aber lediglich eine Konsolenanwendung starten und keine Windowsanwendung. Wie löse ich dieses Problem? Das mit den Threads hat irgendwie nicht so ganz hingehauen, weil ich bei der Angabe der ThreadStartMethode keine Parameter übergeben kann (müsste ich aber, sonst kann ich ja die Kommandozeilenparameter nicht weiterreichen).
 
Hallo.

Um andere Anwendungen zu starten bedint man sich der Process Klasse im Namespace System.Diagnostics.

Code:
ProcessStartInfo proc = new ProcessStartInfo();
proc.Filename = "notepad.exe";
proc.Arguments = "meineTextDatei.txt";
Process.Start(proc);

So könnte das zum Beispiel aussehen.

Und wenn du nun eine Konsolenanwendung haben willst kompilierst du das Programm mit dem Parameter
/target:exe anstatt /target:winexe
Wenn du VisualStudio verwendest kannst du dies in den Projekt-Einstellungen ändern.
Allerdings wenn du 'ein Fenster programmiert hast' wird es auch mit diesem Parameter kommen.
Kommandozeilenparameter kannst du auch einer WinExe ohne weiteres übergeben. Diese werden ganz normal der Main-Methode übergeben. Da gibt es keine Unterschiede.

Wenn du einen Thread mit einem Parameter starten willst könntest du z.b. den Teil der als eigener Thread laufen soll in eine eigene Klasse geben. Wenn du dies nun brauchst, und den Thread starten willst erzeugst du zuerst ein Objekt dieser Klasse, setzt die verschiedenen Parameter und startest dann eine bestimmte Methode dieser Klasse als neuen Thread.

Mfg,
Alex
 
Vielen Dank. So etwas ähnliches habe ich mir auch überlegt, aber das mit dem Process wusste ich noch nicht.

Bei mir wird nun abhängig von der Parameteranzahl entweder die Windowsapplikation oder ein neuer Thread mit einer Konsolenanwendung gestartet. Die Konsolenanwendung läuft dann zwar in einer Fensterumgebung, resp. man sieht keine Konsole, aber das ist mir sogar noch viel lieber, denn ich brauch eh keine Ausgabe (Fehlermeldungen werden in ein LogFile gespeichert).
 
Zurück