2017-11-02 6 views
-3

내가 다음과 같습니다 간단한 콘솔 응용 프로그램을 열고 싶습니다 콘솔 응용 프로그램을 Process.Start를 이 : 내가 관리입력이 다음 양식에 출력을 얻을에

private void button1_Click(object sender, EventArgs e) 
    { 
     ProcessStartInfo processInfo = new ProcessStartInfo(); 
     processInfo.FileName = myexe; 
     processInfo.CreateNoWindow = true; 
     processInfo.UseShellExecute = false; 
     processInfo.RedirectStandardOutput = true; 
     processInfo.RedirectStandardInput = true; 
     processInfo.StandardOutputEncoding = Encoding.GetEncoding(850); 
     Process process = new Process(); 
     process.StartInfo = processInfo; 
     process.Start();   
    } 

StreamReader를 사용하여 출력을 읽고 텍스트 상자에 내용 :

Beginning 
End 
,

그러나 문제는 프로그램이 무시되는 것처럼 Console.ReadLine()에서 대기하지 않는다는 것입니다. 그리고 나는 키보드에서 사용자가 입력하는 방법을 알지 못한다. (콘솔에 직접 연결하는 것이 더 좋다.)

할 방법이 있습니까?

편집

내가 충분히 명확하지 것처럼, 미안 보인다.

간단한 양식을 만들려고합니다. 컨트롤 없음, 바코드를 스캔 할 때 "반응"할 수 있습니다.

는 기본적으로, 콘솔 응용 프로그램이 너무 배경을 실행하려면 내 바코드를 스캔 할 때, 난 내 output 값을 얻을 수 있습니다 :

  1. 양식의 "바코드를 스캔하십시오"
  2. 콘솔 응용 프로그램이 시작됩니다
  3. 바코드는 output 값으로
  4. 바코드 가까운
  5. 콘솔 응용 프로그램을 스캔

그래서 StandardInput는 내 문제의 해결책으로 보이지 않습니다.

그래서 내가 이것을 달성 할 수있는 방법이 있는지 묻는 것입니다.

+0

그럼 당신은'RedirectStandardInput을 설정

ProcessStartInfo processInfo = new ProcessStartInfo { FileName = "console_program", CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardInput = true, }; Process process = new Process { StartInfo = processInfo, }; process.Start(); process.StandardInput.WriteLine("Hey!"); string output = process.StandardOutput.ReadToEnd(); process.WaitForExit(); 

당신은 output 값을 얻을 것이다 '사실로, 이제 콘솔 앱은 당신이 그것을 얻기보다는 입력으로 제공 할 것으로 기대할 것입니다 키보드를 통해 소리를냅니다. –

답변

0

나는 당신이 직면하고있는 문제의 종류를 아주 잘 모르겠지만, 난 당신이 (당신이 그들을 리디렉션 후 일을해야 무엇 임) Process 인스턴스의 StandardInputStandardOutput 속성을 사용하지 않는 것을 알아 차리지하고있다. 다음 예제가 도움이되는지 확인하십시오. 이 콘솔 응용 프로그램이있는 경우

는 :

static void Main(string[] args) 
{ 
    Console.WriteLine("Beginning"); 
    var str = Console.ReadLine(); 
    Console.WriteLine("End: " + str); 
} 

을 그리고 당신은이를 통해 호출 :

"Beginning\r\nEnd: Hey!\r\n" 
+0

답변 해 주셔서 감사합니다. 나는 이미'StandardInput'에 관해 뭔가 읽었지 만, 그게 내가하려고하는 것이 아닙니다.나는 더 많은 "세부 사항들"로 나의 포스트를 편집했다. –