2011-09-12 171 views
3

我搜索周圍,沒有發現任何有用的東西! 。:(從正在運行的應用程序通過c運行命令行#

我要的是有我的C#應用​​程序做一個命令正在運行的進程這個正在運行的進程是一個控制檯應用程序,我只需要輸入命令「重啓」 ..我的嘗試是:

Process[] processes = Process.GetProcessesByName("OpenSim.32BitLaunch"); 

foreach (Process p in processes) 
{ 
    p.StandardInput.WriteLine("restart"); 
} 
+0

僅僅因爲你通過流程循環,這並不意味着在循環中正在做什麼的過程的任何聲明。 Console.WriteLine將文本寫入標準輸出,與'p'無關。 – Phil

回答

1

感謝您的幫助球員:)我設法解決使用SetForegroundWindow和SendKeys。 這是一件就是這樣的(記得要導入相應的dll的在前):

System.Diagnostics.Process process = Process.GetProcessesByName("OpenSim.32BitLaunch")[0]; 

     Process[] processes = Process.GetProcessesByName("OpenSim.32BitLaunch"); 

     foreach (Process p in processes) 
      { 


       SetForegroundWindow(p.MainWindowHandle); 
       Thread.Sleep(1000); 
       SendKeys.SendWait("quit"); 
       Thread.Sleep(1000); 
       SendKeys.SendWait("{ENTER}"); 

      } 
4

您可以寫信給p.StandardInput

+0

說,non-invocabble的成員不能使用像一個方法:(嘗試StandardInput.Writeline(「重啓」);但得到了一個執行:( – mkW

+0

你得到了什麼異常? – SLaks

+0

TY你的幫助...我得到InvalidOperationException是沒有處理..標準中沒有重定向 – mkW

1

而不是

Console.WriteLine("restart"); 

使用

p.StandardInput.WriteLine("restart"); 
+0

試過StandardInput.Writeline(「restart」);但得到了一個execption .. StandardIn不重定向:( – mkW