2014-08-30 2 views
0

Я использую этот код для передачи двух чисел в качестве входных данных в .exe файла программы C через asp.net и после этого пытается прочитать вывод с консоли. У меня возникла проблема с чтением любого результата с консоли.Чтение вывода с консоли через 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

И ... в чем проблема? –

+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 из вашего кода.

+0

он не передает никаких данных. он просто открывает файл .exe, хотя окно консоли скрыто. –

+0

@AdilShafiq Я не уверен, что понимаю вас, вы говорите, что моя программа не работает или есть какая-то другая проблема? – jpw

+0

с использованием строки записи не пропускают вход, вместо этого он открывает exe в консоли и запрашивает ввод с клавиатуры. –

Смежные вопросы