2016-04-15 10 views
0

Da ich mein School-Projekt beendet habe und jetzt nichts mehr übrig ist, habe ich angefangen ein Easteregg in meiner kleinen Konsolenanwendung zu implementieren. Es sollte (pkgmgr /iu:"TelnetClient") telnet installieren und die Starwars Animation nennen: "telnet" + "o" + "towel.blinkenlights.nl"Installiere und verbinde dich mit Telnet [Konsolenanwendung]

Um das zu tun, öffnet sich meine Anwendung ein CMD-Prompt auf, die Telnet installiert:

public static void EastereggInstall() 
    { 
     Process cmd = new Process(); 

     cmd.StartInfo.FileName = "cmd.exe"; 
     cmd.StartInfo.RedirectStandardInput = true; 
     cmd.StartInfo.RedirectStandardOutput = true; 
     cmd.StartInfo.CreateNoWindow = true; 
     cmd.StartInfo.UseShellExecute = false; 

     cmd.Start(); 

     cmd.StandardInput.WriteLine("pkgmgr /iu:'TelnetClient'"); 
     cmd.StandardInput.Flush(); 
     cmd.StandardInput.Close(); 
     Console.WriteLine(cmd.StandardOutput.ReadToEnd()); 
     Environment.Exit(0); 
    } 

Nach der Aufgabe mit Environment.Exit(0); beendet ist es ein anderer ruft CMD-Eingabeaufforderung an den Telnet-Server zu verbinden, die die Animation beginnt:

public static void EastereggPlay() 
    { 
     Process cmd = new Process(); 

     cmd.StartInfo.FileName = "cmd.exe"; 
     cmd.StartInfo.RedirectStandardInput = true; 
     cmd.StartInfo.RedirectStandardOutput = true; 
     cmd.StartInfo.CreateNoWindow = true; 
     cmd.StartInfo.UseShellExecute = false; 

     cmd.Start(); 

     cmd.StandardInput.WriteLine("telnet" + "o" + "towel.blinkenlights.nl"); 
     cmd.StandardInput.Flush(); 
     cmd.StandardInput.Close(); 
     Console.WriteLine(cmd.StandardOutput.ReadToEnd()); 
    } 

jedoch das erste Commandprompt selbst auch immer ohne Fehlermeldung geschlossen wird. Ich habe auch versucht, Console.ReadKey() zu verwenden, um den Fehler zu bekommen, aber immer noch keine nützlichen Informationen dort. Mein erster Gedanke war, dass cmd.StandardInput.WriteLine("telnet" + "o" + "towel.blinkenlights.nl"); kann nicht mit ihm in einer einzigen Zeile ausgeführt werden, so habe ich versucht

cmd.StandardInput.WriteLine("telnet"); 
cmd.StandardInput.WriteLine("o"); 
cmd.StandardInput.WriteLine("towel.blinkenlights.nl"); 

noch keinen Erfolg. Wissen Sie also, was ich tun soll, damit dieses Code-Stück funktioniert? Vielen Dank!

Antwort

1

Verwendung

ProcessStartInfo startInfo = new ProcessStartInfo("cmd"); 
startInfo.WindowStyle = ProcessWindowStyle.Normal; 

startInfo.Arguments = "/c telnet o towel.blinkenlights.nl"; 
Process.Start(startInfo); 

sicher, dass Befehl funktioniert, weil der cmd-Prozess beendet nur, wenn nicht.

sicherzustellen, dass alles funktioniert zu machen, versuchen, so etwas wie

startInfo.Arguments = "/c ping google.com -t"; 

auch beim Testen Sie CreateNoWindow-false

Einstellung in Betracht ziehen sollten
1

Environment.Exit (0) Schließen Sie die gesamte Umgebung.

Sie sollten nur den Prozess schließen, damit der Code die Telnet-Verbindung erreichen kann.