2016-04-15 86 views
0

由於我完成了學校項目,現在沒有任何東西了,我開始在我的小控制檯應用程序中實現Easteregg。應該安裝Telnet (pkgmgr /iu:"TelnetClient")並調用星球大戰動畫:"telnet" + "o" + "towel.blinkenlights.nl"安裝並連接到Telnet [控制檯應用程序]

要做到這一點,我的應用開闢了一個CMD提示符,它安裝遠程登錄:

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); 
    } 

後的任務是完成與Environment.Exit(0);它調用另一個CMD-提示連接到啓動動畫Telnet服務器:

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()); 
    } 

然而,第一Commandprompt關閉本身並沒有錯誤消息任何責任。 我也嘗試使用Console.ReadKey()來獲得錯誤,但仍然沒有有用的信息。我的第一個念頭是cmd.StandardInput.WriteLine("telnet" + "o" + "towel.blinkenlights.nl");不能由一個單一的線用它來執行,所以我嘗試

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

仍然沒有成功。那麼你們知道我應該怎麼做才能讓這段代碼起作用嗎?謝謝!

回答

1

使用

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

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

確保命令的工作,因爲CMD過程將只是退出如果沒有。

,以確保一切正常運作,嘗試像

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

此外,在測試你應該考慮設置CreateNoWindowfalse

1

Environment.Exit(0)關閉整個環境。

您應該只關閉進程,以便代碼可以到達telnet連接。

相關問題