C# CMD창 안띄우고 명령어 주고 받기
C#/Tip :
2009. 10. 24. 14:06
CMD창으로 데이터를 입출력 하기 위해서 여기저가 찾다가 완성한 코드입니다.
당연히 남겨놔야 까먹어도 다시 쓸수 있기때문에 남겨놓습니다.
Process 클레스를 사용하기 위하여 Diagnostics를 using합니다.
ProcessStartInfo 클레스를 사용하여 cmd창으로 보낼 설정을 합니다.
ProcessStartInfo cmd = new ProcessStartInfo(); Process process = new Process(); cmd.FileName = @"cmd"; cmd.WindowStyle = ProcessWindowStyle.Hidden; // cmd창이 숨겨지도록 하기 cmd.CreateNoWindow = true; // cmd창을 띄우지 안도록 하기 cmd.UseShellExecute = false; cmd.RedirectStandardOutput = true; // cmd창에서 데이터를 가져오기 cmd.RedirectStandardInput = true; // cmd창으로 데이터 보내기 cmd.RedirectStandardError = true; // cmd창에서 오류 내용 가져오기
다음 Process 클레스에서 Process 클레스에서 cmd 를 적용해줍니다.
그리고 사용합니다!!
process.EnableRaisingEvents = false; process.StartInfo = cmd; process.Start(); process.StandardInput.Write(@"명령어를 넣으면 된다" + Environment.NewLine); // 명령어를 보낼때는 꼭 마무리를 해줘야 한다. 그래서 마지막에 NewLine가 필요하다 process.StandardInput.Close(); string result = process.StandardOutput.ReadToEnd(); StringBuilder sb = new StringBuilder(); sb.Append ("[Result Info]"+DateTime.Now+"\r\n"); sb.Append(result); sb.Append("\r\n"); textBox1.Text = sb.ToString(); process.WaitForExit(); process.Close();
위 코드들을 하나의 클레스에 넣고 사용하면 됩니다.
'C# > Tip' 카테고리의 다른 글
c# 네트워크프로그래밍 기초... (0) | 2009.12.30 |
---|---|
c# invoke 활용시 확장성있게~ (0) | 2009.12.30 |
C# ToArray(type) 메서드에서 강력하게 형식화된 배열 반환 (0) | 2009.10.05 |
C# 문자열 암호화 - RSA, MD5, DES (0) | 2009.10.05 |
C# 소켓통신의 개요 (1) | 2009.10.01 |