2013-08-24 228 views
-2

所以,我正在编写一个程序,这是它的开始!强制一个应用程序关闭时,不同的应用程序已关闭,然后关闭自己

namespace ConsoleApplication4 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      System.Diagnostics.Process.Start(@"C:\\Windows\\ehome\\ehshell.exe"); 
      System.Diagnostics.Process.Start(@"E:\\Xpadder\\WMC.xpaddercontroller"); 
     } 
    } 
} 

它所做的只是打开这两个文件。我想要它做的也是等到它检测到ehshell.exe停止运行时,然后强制另一个程序(在本例中为xpadder)也结束。

我一直在寻找这样做的代码,但我不是最好的C#,并不是100%确定我在找什么!

+0

有多难放话'C#显示器process'到谷歌搜索引擎?你很容易就会超过10Mil。结果.. – walther

+0

@walther对于任何查询,Google不会提供超过1000个结果。 – Paulpro

+0

http://stackoverflow.com/a/12015686/495455 –

回答

1
 var p1 = new ProcessStartInfo 
     { 
      FileName = atomicParsleyFile, 
      Arguments = atomicParsleyCommands, 
      WindowStyle = ProcessWindowStyle.Hidden, 
      UseShellExecute = false, 
      CreateNoWindow = true, 
      RedirectStandardOutput = true 
     }; 

     var proc = new Process { StartInfo = p1 }; 

     if (!proc.Start()) 
     { 
      throw new ApplicationException("Starting atomic parsley failed!"); 
     } 

        /*Repeat above for second process here */ 

     Console.WriteLine(proc.StandardOutput.ReadToEnd()); 

     proc.WaitForExit(); //Run AtomicParsley and Wait for Exit 
        proc2.Kill(); 
+0

它可能会更短,但我把它从我以前做过的事情中剥离出来,我需要上述选项。如果你期望你的程序输出大量数据,你不应该重定向标准输出,或者读取和输出比我小的数据块。 –

0
static void Main(string[] args) 
    { 
     System.Diagnostics.Process p1 = System.Diagnostics.Process.Start(@"C:\\Windows\\ehome\\ehshell.exe"); 
     System.Diagnostics.Process p2 = System.Diagnostics.Process.Start(@"E:\\Xpadder\\WMC.xpaddercontroller"); 
     p1.Exited += (s,e) => { 
      if(!p2.HasExited) p2.Kill(); 
     }; 

    }