728x90
728x170
▶ MainForm.cs
using Microsoft.Win32.SafeHandles;
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : Form
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Import
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 표준 핸들 구하기 - GetStdHandle(standardHandle)
/// <summary>
/// 표준 핸들 구하기
/// </summary>
/// <param name="standardHandle">표준 핸들</param>
/// <returns>표준 핸들</returns>
[DllImport("kernel32.dll", EntryPoint = "GetStdHandle", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
private static extern IntPtr GetStdHandle(int standardHandle);
#endregion
#region 콘솔 할당하기 - AllocConsole()
/// <summary>
/// 콘솔 할당하기
/// </summary>
/// <returns>처리 결과</returns>
[DllImport("kernel32.dll", EntryPoint = "AllocConsole", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
private static extern int AllocConsole();
#endregion
#region 콘솔 창 숨기기 - FreeConsole()
/// <summary>
/// 콘솔 창 숨기기
/// </summary>
/// <returns>처리 결과</returns>
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool FreeConsole();
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Public
#region Field
/// <summary>
/// STANDARD_OUTPUT_HANDLE
/// </summary>
private const int STANDARD_OUTPUT_HANDLE = -11;
/// <summary>
/// MY_CODE_PAGE
/// </summary>
private const int MY_CODE_PAGE = 437;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
this.testButton.Click += testButton_Click;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 테스트 버튼 클릭시 처리하기 - testButton_Click(sender, e)
/// <summary>
/// 테스트 버튼 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void testButton_Click(object sender, EventArgs e)
{
try
{
this.testButton.Enabled = false;
ShowConsole();
for(int i = 0; i < 10; i++)
{
Console.WriteLine("테스트");
Thread.Sleep(100);
}
}
finally
{
HideConsole();
this.testButton.Enabled = true;
}
}
#endregion
#region 콘솔 보여주기 - ShowConsole()
/// <summary>
/// 콘솔 보여주기
/// </summary>
private void ShowConsole()
{
AllocConsole();
IntPtr standardHandle = GetStdHandle(STANDARD_OUTPUT_HANDLE);
SafeFileHandle standardSafeFileHandle = new SafeFileHandle(standardHandle, true);
FileStream fileStream = new FileStream(standardSafeFileHandle, FileAccess.Write);
Encoding encoding = Encoding.Default;
StreamWriter streamWriter = new StreamWriter(fileStream, encoding);
streamWriter.AutoFlush = true;
Console.SetOut(streamWriter);
}
#endregion
#region 콘솔 숨기기 - HideConsole()
/// <summary>
/// 콘솔 숨기기
/// </summary>
private void HideConsole()
{
FreeConsole();
}
#endregion
}
}
728x90
그리드형(광고전용)
'C# > WinForm' 카테고리의 다른 글
[C#/WINFORM] 별 그리기 (0) | 2018.04.14 |
---|---|
[C#/WINFORM] Pen 클래스 : 1 픽셀 너비 펜 구하기 (0) | 2018.04.13 |
[C#/WINFORM] 무어의 이웃 등고선 추적 (Moore Neighbor Contour Tracing) 알고리즘 사용하기 (0) | 2018.04.12 |
[C#/WINFORM] DirectShow를 사용해 동영상 재생하기 (0) | 2018.04.02 |
[C#/WINFORM] PrinterSettings 클래스 : InstalledPrinters 속성을 사용해 설치 프린터 조회하기 (0) | 2018.03.22 |
[C#/WINFORM] BitBlt 함수를 사용해 비트맵 복사하기 (0) | 2018.03.15 |
[C#/WINFORM] PropertyGrid 클래스 : 이미지 목록을 사용해 항목 값 선택하기 (0) | 2018.03.04 |
[C#/WINFORM] PropertyGrid 클래스 : 목록을 사용해 항목 값 선택하기 (0) | 2018.03.04 |
[C#/WINFORM] PropertyGrid 클래스 사용하기 (0) | 2018.03.04 |
[C#/WINFORM] GroupBox 클래스 : 테두리 색상 설정하기 (0) | 2018.03.04 |