2011-09-12 120 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