title: Sending commands to cmd prompt in C#
body: <p>For one of my implementations I am working on a tool that is supposed to send/retrieve commands/results to/from the cmd window. Everything works fine but the Use case below fails to do anything. It seems as if my application is waiting for something (instead of displaying the result) </p>
  
  <p>From my tool I navigate to the python folder . From the python folder I try to launch  python.exe but at this point, my editor does not do anything. it simply keeps on waiting. </p>
  
  <p>For your kind consideration I am also linking the video here. It would be easier for you guys to understand what I am trying to say. </p>
  
  <p><a href="http://www.youtube.com/watch?v=MkGZOQSMXuM" rel="noreferrer">View the Video here (on youtube)</a></p>
  
  <p>I am also attaching the code that I currently have. </p>
  
  <pre><code>            ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
  
              string argument = null;
              if (!string.IsNullOrEmpty(startingDirectory) &amp;&amp; System.IO.Directory.Exists(startingDirectory))
              {
                 argument += @"cd\";
              }
              else
              {
                  argument += "\"";
              }
              info.Arguments = argument;
              info.CreateNoWindow = true;
              info.RedirectStandardError = true;
              info.RedirectStandardInput = true;
              info.RedirectStandardOutput = true;
              info.UseShellExecute = false;
               this.shellProcess = System.Diagnostics.Process.Start(info);
              this.shellProcess.EnableRaisingEvents = true;
              //this.InputStream.AutoFlush = true;
              this.shellProcess.Exited += new EventHandler(ProcessExited);
              this.ErrorBeginRead();
              this.OutputBeginRead();
  
   private void OutputBeginRead()
      {
          this.shellProcess.StandardOutput.BaseStream.BeginRead(outputBuffer, 0, outputBuffer.Length, new AsyncCallback(this.OnOutputInput), this.shellProcess);
      }
  
          private void ErrorBeginRead()
      {
          this.shellProcess.StandardError.BaseStream.BeginRead(errorBuffer, 0, errorBuffer.Length, new AsyncCallback(this.OnErrorInput), this.shellProcess);
      }
  </code></pre>
  
  <p>Thank you !</p>
  
  <p>EDIT:
  Launching python is just an example. I need to use the same method for other normal cmd line commands as well.It would be nice, if somebody can point what i am doing wrong with the code that I have  or what I must do , in order to achieve the intended functionality. </p>
  
  <p>EDIT 2 : The normal cmd commands are working perfectly. The command line tools like python,perl are not working .</p>
  
  <p>Edit 3 : So I managed to do move a wee bit forward following Jamie's suggestions. The ui is not "hanging" anymore. but when i access the python interpreter , the interpreter's output is still not visible in my tool. Any suggestions why that might be happening ? </p>