2014-08-30 61 views
0

我正在使用此代碼將兩個數字作爲輸入傳遞給通過asp.net的C程序文件的.exe,然後嘗試從控制檯讀取輸出。我有問題要閱讀控制檯的任何輸出。通過asp.net從控制檯讀取輸出

我的asp.net代碼是。

string returnvalue;

Process p = new Process(); 

p.StartInfo.CreateNoWindow = true; 
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
p.StartInfo.FileName = ("C:\\Users\\...\\noname01.exe"); 
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.RedirectStandardInput = true; 
p.Start(); 
Thread.Sleep(500); 
SendKeys.SendWait("1"); 
Thread.Sleep(500); 
SendKeys.SendWait("~"); 
Thread.Sleep(500); 
SendKeys.SendWait("2"); 
Thread.Sleep(500); 
SendKeys.SendWait("~"); 
Thread.Sleep(500); 

StreamReader sr = p.StandardOutput; 

returnvalue = sr.ReadToEnd(); 

System.IO.StreamWriter file = new System.IO.StreamWriter("C:\\Users\\Hussain\\Documents\\Visual Studio 2012\\WebSites\\WebSite4\\Data\\StudentOutput.txt"); 
file.WriteLine(returnvalue); 

我傳遞輸入的C代碼是。

#include<stdio.h> 

    int main() 
    { 
    int a, b, c; 

    printf("Enter two numbers to add\n"); 
    scanf("%d%d",&a,&b); 

    c = a + b; 

    printf("Sum of entered numbers = %d\n",c); 

    return 0; 
    } 

需要任何形式的幫助。

+0

而......問題是什麼? – 2014-08-30 11:48:36

+0

我不能從控制檯讀取任何輸出。 – 2014-08-30 11:53:30

回答

0

我不確定SendKeys是否適用於這種情況,因爲控制檯窗口是隱藏的,SendKeys應該寫入活動窗口並且子進程windw被隱藏,但是如果您使用StandardInput.WriteLine向孩子發送數據處理它應該工作。

此代碼的工作,並創建一個文件AdderOutput.txt,內容如下:

輸入兩個數字加輸入的數字的
總和= 3

using System.Diagnostics; 
using System.IO; 
using System.Threading; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string returnvalue; 

      Process p = new Process(); 

      p.StartInfo.CreateNoWindow = true; 
      p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
      p.StartInfo.FileName = ("D:\\adder.exe"); 
      p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      p.StartInfo.UseShellExecute = false; 
      p.StartInfo.RedirectStandardOutput = true; 
      p.StartInfo.RedirectStandardInput = true; 
      p.Start(); 
      Thread.Sleep(500); 

      p.StandardInput.WriteLine("1"); 
      Thread.Sleep(500); 
      p.StandardInput.WriteLine("2"); 
      Thread.Sleep(500); 
      StreamReader sr = p.StandardOutput; 
      returnvalue = sr.ReadToEnd(); 

      System.IO.StreamWriter file = new System.IO.StreamWriter("D:\\AdderOutput.txt"); 
      file.WriteLine(returnvalue); 
      file.Flush(); 
      file.Close(); 
     } 
    } 
} 

這可能不是最好的解決方案 - 從我做C#開始已經有一段時間了 - 但它似乎工作。 adder.exe使用的是您的代碼中的C程序。

+0

它沒有通過任何輸入。它只是打開.exe文件,儘管控制檯窗口是隱藏的。 – 2014-08-30 14:37:06

+0

@AdilShafiq我不確定我是否理解你,你是說我的程序不工作還是有其他問題? – jpw 2014-08-30 14:41:38

+0

使用寫入行不通過輸入,而是打開控制檯中的exe文件並通過鍵盤請求輸入。 – 2014-08-30 16:10:35