728x90
728x170
▶ ControlType.cs
namespace TestProject
{
/// <summary>
/// 컨트롤 타입
/// </summary>
public enum ControlType
{
/// <summary>
/// CTRL_C_EVENT
/// </summary>
CTRL_C_EVENT = 0,
/// <summary>
/// CTRL_BREAK_EVENT
/// </summary>
CTRL_BREAK_EVENT = 1,
/// <summary>
/// CTRL_CLOSE_EVENT
/// </summary>
CTRL_CLOSE_EVENT = 2,
/// <summary>
/// CTRL_LOGOFF_EVENT
/// </summary>
CTRL_LOGOFF_EVENT = 5,
/// <summary>
/// CTRL_SHUTDOWN_EVENT
/// </summary>
CTRL_SHUTDOWN_EVENT = 6
}
}
728x90
▶ Program.cs
using System;
using System.Runtime.InteropServices;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Delegate
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 콘솔 컨트롤 핸들러 설정하기 대리자 - SetConsoleCtrlHandlerDelegate(controlType)
/// <summary>
/// 콘솔 컨트롤 핸들러 설정하기 대리자
/// </summary>
/// <param name="controlType">컨트롤 타입</param>
/// <returns>처리 결과</returns>
private delegate bool SetConsoleCtrlHandlerDelegate(ControlType controlType);
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Import
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 콘솔 컨트롤 핸들러 설정하기 - SetConsoleCtrlHandler(handler, add)
/// <summary>
/// 콘솔 컨트롤 핸들러 설정하기
/// </summary>
/// <param name="handler">핸들러</param>
/// <param name="add">추가 여부</param>
/// <returns>처리 결과</returns>
[DllImport("kernel32")]
private static extern bool SetConsoleCtrlHandler(SetConsoleCtrlHandlerDelegate handler, bool add);
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 콘솔 컨트롤 핸들러 - ConsoleCtrlHandler(controlType)
/// <summary>
/// 콘솔 컨트롤 핸들러
/// </summary>
/// <param name="controlType">컨트롤</param>
/// <returns>처리 결과</returns>
private static bool ConsoleCtrlHandler(ControlType controlType)
{
switch(controlType)
{
case ControlType.CTRL_BREAK_EVENT :
case ControlType.CTRL_C_EVENT :
case ControlType.CTRL_LOGOFF_EVENT :
case ControlType.CTRL_SHUTDOWN_EVENT :
case ControlType.CTRL_CLOSE_EVENT :
Environment.Exit(0);
return false;
default :
return false;
}
}
#endregion
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
private static void Main()
{
SetConsoleCtrlHandler(ConsoleCtrlHandler, true);
Console.WriteLine("프로그램을 종료하기 위해서 아무 키나 눌러 주시기 바랍니다.");
Console.ReadKey(true);
}
#endregion
}
}
728x90
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] BitArray 클래스 : 정수 배열을 사용해 비트 배열 만들기 (0) | 2021.08.26 |
---|---|
[C#/COMMON] BitArray 클래스 : 바이트 배열을 사용해 비트 배열 만들기 (0) | 2021.08.26 |
[C#/COMMON] BitArray 클래스 : 원본 데이터를 사용해 복사본 만들기 (0) | 2021.08.26 |
[C#/COMMON] BitArray 클래스 사용하기 (0) | 2021.08.26 |
[C#/COMMON] NetworkInterface 클래스 : 이용 가능한 물리적 네트워크 여부 구하기 (0) | 2021.08.25 |
[C#/COMMON] DateTime 구조체 : 특정 연월의 특정 요일 수 구하기 (0) | 2021.08.23 |
[C#/COMMON] FileSecurity 클래스 : GetOwner 메소드를 사용해 파일 소유자 구하기 (0) | 2021.08.23 |
[C#/COMMON] 기존 범위의 값에서 신규 범위의 값 구하기 (0) | 2021.08.22 |
[C#/COMMON] IPAddress 클래스 : 서브넷 마스크 구하기 (0) | 2021.08.22 |
[C#/COMMON] 네트워크 드라이브 사용하기 (0) | 2021.08.22 |