Laden...

[Tutorial] Prozess/Anwendung aus eigenem Programm starten

Erstellt von Vellas vor 19 Jahren Letzter Beitrag vor 19 Jahren 63.945 Views
V
Vellas Themenstarter:in
842 Beiträge seit 2003
vor 19 Jahren
[Tutorial] Prozess/Anwendung aus eigenem Programm starten

Hallo!

Um eine Anwendung aus seinem eigenen Programm heraus zu starten gibt es dafür die Methode start. Hier mal 2 Überladungen:

string Programmname = "notepad.exe";
System.Diagnostics.Process.Start(Programmname);
string Programmname = "IExplore.exe";
string Parameter = "www.mycsharp.de";
System.Diagnostics.Process.Start(Programmname, Parameter);

Wobei man eine Webseite auch sehr leich mit dem Standard-Browser wie folgt öffnen kann:

string Programmname = "www.visual-cplusplus.net"; // Achtung: Schleichwerbung *g*
System.Diagnostics.Process.Start(Programmname);

Eine weitere Möglichkeit wäre z.B. Start Informationen für eine Anendung vor dem Starten auszurufen, wo es beim Aufrufen von Konsolenprogrammen die nur etwas ausführen sollen die schöne Eigenschaft zu verstecken der Konsole gibt, was ein aufblitzen eines Konsolenfensters verhindert. Ein gerne von mir verwendetes Beispiel ist das Folgende:

// "net send" wird aufgerufen um eine Nachricht zu versenden
System.Diagnostics.ProcessStartInfo sendInfo = new System.Diagnostics.ProcessStartInfo("net.exe","send \"" + empfaenger + "\" \"" + sendText + "\"");
// Fenster des zu startenden Prozesses wird versteckt
sendInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
// Warte mit der Programmausführung bis der Prozess beendet ist
System.Diagnostics.Process.Start(sendInfo).WaitForExit();

Dieser Codeschnipsel ruft das Programm net.exe auf, welches eine Nachricht über den Windowsnachrichtendienst an einen Benutzer im Netzwerk versendet. Parameter sind:
send
Empfänger
Nachricht

WaitForExit() wartet mit der Programmausführung bis net.exe seinen Dienst beendet hat. Diese Funktion ist dann sehr praktisch wenn man zusätzlich noch Abfragen will wie das Programm beendet wurde:

if(sendInfo.ExitCode==0)
  MessageBox.Show("Die Ausführung war erfolgreich.");
else
  MessageBox.Show("Die Anwendung wurde mit einem Fehler beendet.");

Wenn man von einer Konsolenanwendung den Console-Output benötigt und nicht möchte das ein Fenster, trotz setzen des WindowStyle auf Hidden, erscheint muss man zusätzlich noch die CreateNoWindow-Eigenschaft auf true setzen:

ProcessStartInfo psi = new ProcessStartInfo("net.exe","send \"" + empfaenger + "\" \"" + sendText + "\"");
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.CreateNoWindow = true;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;

Code-Hacker