通过asp.net从控制台读取输出

时间:2014-08-30 11:47:36

标签: c# asp.net

我正在使用此代码通过asp.net将两个数字作为输入传递给C程序文件的.exe,然后尝试从控制台读取输出。我在从控制台读取任何输出时遇到问题。

我的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;
    }

需要任何帮助。

1 个答案:

答案 0 :(得分: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程序。