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

本文关键字:读取 输出 控制台 asp net 通过 | 更新日期: 2023-09-27 18:20:13

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

我的asp.net代码是.

字符串返回值;

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

任何需要的帮助。

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

我不确定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程序。