[C#/COMMON] Process 클래스 : BeginOutputReadLine 메소드를 사용해 도스 명령 실행 결과 구하기
C#/Common 2019. 10. 19. 00:41■ Process 클래스 : BeginOutputReadLine 메소드를 사용해 도스 명령 실행 결과 구하기
------------------------------------------------------------------------------------------------------------------------
▶ MainForm.cs
using System; using System.Diagnostics; using System.Text; using System.Windows.Forms;
namespace TestProject { /// <summary> /// 메인 폼 /// </summary> public partial class MainForm : Form { //////////////////////////////////////////////////////////////////////////////////////////////////// Field ////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary> /// 결과 문자열 빌더 /// </summary> private StringBuilder resultStringBuilder = new StringBuilder();
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary> /// 생성자 /// </summary> public MainForm() { InitializeComponent();
this.runButton.Click += runButton_Click; }
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Private //////////////////////////////////////////////////////////////////////////////// Event
#region 프로세스 출력 데이터 수신시 처리하기 - process_OutputDataReceived(sender, e)
/// <summary> /// 프로세스 출력 데이터 수신시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void process_OutputDataReceived(object sender, DataReceivedEventArgs e) { this.resultStringBuilder.AppendLine(e.Data); }
#endregion #region 실행 버튼 클릭시 처리하기 - runButton_Click(sender, e)
/// <summary> /// 실행 버튼 클릭시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void runButton_Click(object sender, EventArgs e) { this.resultStringBuilder.Clear();
string dosCommand = this.dosCommandTextBox.Text.Trim();
Process process = GetProcess(dosCommand);
process.OutputDataReceived += process_OutputDataReceived;
process.Start();
process.BeginOutputReadLine();
process.WaitForExit();
this.resultTextBox.Text = this.resultStringBuilder.ToString(); }
#endregion
//////////////////////////////////////////////////////////////////////////////// Function
#region 프로세스 구하기 - GetProcess(dosCommand)
/// <summary> /// 프로세스 구하기 /// </summary> /// <param name="dosCommand">DOS 명령</param> /// <returns>프로세스</returns> private Process GetProcess(string dosCommand) { Process process = new Process();
process.EnableRaisingEvents = true; process.StartInfo.FileName = "cmd.exe"; process.StartInfo.Arguments = string.Format("/C {0}", dosCommand); process.StartInfo.WindowStyle = ProcessWindowStyle.Minimized; process.StartInfo.CreateNoWindow = true; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true;
return process; }
#endregion } }
|
------------------------------------------------------------------------------------------------------------------------
'C# > Common' 카테고리의 다른 글
[C#/COMMON] IDisposable 헬퍼 사용하기 (0) | 2019.11.19 |
---|---|
[C#/COMMON] 함수형 확장 사용하기 (0) | 2019.11.19 |
[C#/COMMON] StringBuilder 클래스 : 확장 기능 사용하기 (0) | 2019.11.19 |
[C#/COMMON] Aggregate 확장 메소드를 사용해 팩토리얼 구하기 (0) | 2019.11.19 |
[C#/COMMON] Aggregate 확장 메소드를 사용해 문자열 결합하기 (0) | 2019.11.19 |
[C#/COMMON] Process 클래스 : BeginOutputReadLine 메소드를 사용해 도스 명령 실행 결과 구하기 (0) | 2019.10.19 |
[C#/COMMON] CPU 부하 생성하기 (0) | 2019.10.16 |
[C#/COMMON] ServicePointManager 클래스 : DefaultConnectionLimit 정적 속성을 사용해 웹 요청 동시 접속 수 설정하기 (0) | 2019.10.12 |
[C#/COMMON] 사용자 계정 로그온 권한 조사하기 (0) | 2019.10.11 |
[C#/COMMON] 한글 문자열 확장 처리 기능 사용하기 (0) | 2019.10.07 |
[C#/COMMON] WebClient 클래스 : 외부 IP 주소 구하기 (0) | 2019.10.06 |
댓글을 달아 주세요