2008-09-17 5 views
3

나는 프레임 워크 2.0의 Process 개체를 사용하여 스크립트와 명령 줄 프로그램을 실행할 닷넷 프로그램을 작성하고 있습니다. 내 프로그램에서 프로세스의 화면 버퍼에 액세스 할 수 있기를 원합니다. 나는 이것을 조사했고 콘솔 stdout 및 stderr 버퍼에 액세스해야하는 것으로 보입니다. 누구나 이것이 관리 코드를 사용하여 수행되는 방법을 알고 있습니까?.net 관리 코드를 사용하여 명령 창을 스크랩하는 화면

콘솔의 문자 및 속성 데이터 블록을 읽으려면 작업에 첨부 된 Windows 콘솔의 AttachConsole 및 ReadConsoleOutput을 사용해야한다고 생각합니다. 이 코드를 관리해야합니다.

http://msdn.microsoft.com/en-us/library/ms684965(VS.85).aspx

답변

2

당신은 System.Diagnostics.Process가 클래스에 StandardError, StandardOutput 및 StandardInput 속성을 사용하여이 작업을 수행 할 수 있습니다 참조하십시오.

MSDN에는 좋은 example of redirecting standard in and out 프로세스가 있습니다.

시작한 프로세스 출력 만 리디렉션 할 수 있습니다. 실행하지 않은 외부 프로세스는 사실 이후에 자신의 표준 출력을 리디렉션 할 수 없습니다.

StandardInput을 사용하려면 ProcessStartInfo.UseShellExecute를 false로 설정해야하며 ProcessStartInfo.RedirectStandardInput을 true로 설정해야합니다. 그렇지 않으면 StandardInput 스트림에 쓰면 예외가 발생합니다.

+0

신속한 답변을 보내 주셔서 감사합니다. 그러나 스트림을 읽고 싶지는 않습니다. 명령 창에 표시되는 콘솔 버퍼에 액세스하려고합니다. html 페이지에서 화면 스크래핑을하는 것과 비슷합니다. –

+0

콘솔의 AttachConsole 메서드를 사용하고 문자 및 특성 데이터의 사각형에 액세스하기 위해 ReadConsoleOutput 메서드를 사용해야한다고 생각합니다. 관리 코드에서이 작업을 수행하는 방법을 모르겠습니다. –