■ 윈도우 종료하기

------------------------------------------------------------------------------------------------------------------------


TestProject.zip


MainForm.cs

 

 

using System;

using System.Diagnostics;

using System.Runtime.InteropServices;

using System.Windows.Forms;

 

namespace TestProject

{

    /// <summary>

    /// 메인 폼

    /// </summary>

    public partial class MainForm : Form

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Import

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Private

 

        #region 윈도우 종료하기 (확장) - ExitWindowsEx(flag, reason)

 

        /// <summary>

        /// 윈도우 종료하기 (확장)

        /// </summary>

        /// <param name="flag">플래그</param>

        /// <param name="reason">이유</param>

        /// <returns>처리 결과</returns>

        [DllImport("user32")]

        private static extern bool ExitWindowsEx(uint flag, uint reason);

 

        #endregion

        #region 워크스테이션 잠그기 - LockWorkStation()

 

        /// <summary>

        /// 워크스테이션 잠그기

        /// </summary>

        [DllImport("user32")]

        private static extern void LockWorkStation();

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - MainForm()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainForm()

        {

            InitializeComponent();

 

            #region 이벤트를 설정한다.

 

            this.shutdownButton.Click  += shutdownButton_Click;

            this.rebootButton.Click    += rebootButton_Click;

            this.logOffButton.Click    += logOffButton_Click;

            this.lockButton.Click      += lockButton_Click;

            this.hibernateButton.Click += hibernateButton_Click;

            this.sleepButton.Click     += sleepButton_Click;

 

            #endregion

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Private

        //////////////////////////////////////////////////////////////////////////////// Event

 

        #region 시스템 종료 버튼 클릭시 처리하기 - shutdownButton_Click(sender, e)

 

        /// <summary>

        /// 시스템 종료 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void shutdownButton_Click(object sender, EventArgs e)

        {

            ProcessStartInfo processStartInfo = new ProcessStartInfo("shutdown", "/s /t 0");

 

            processStartInfo.CreateNoWindow  = true;

            processStartInfo.UseShellExecute = false;

 

            Process.Start(processStartInfo);

        }

 

        #endregion

        #region 다시 시작 버튼 클릭시 처리하기 - rebootButton_Click(sender, e)

 

        /// <summary>

        /// 다시 시작 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void rebootButton_Click(object sender, EventArgs e)

        {

            ProcessStartInfo processStartInfo = new ProcessStartInfo("shutdown", "/r /t 0");

 

            processStartInfo.CreateNoWindow  = true;

            processStartInfo.UseShellExecute = false;

 

            Process.Start(processStartInfo);

        }

 

        #endregion

        #region 로그 오프 버튼 클릭시 처리하기 - logOffButton_Click(sender, e)

 

        /// <summary>

        /// 로그 오프 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void logOffButton_Click(object sender, EventArgs e)

        {

            ExitWindowsEx(0, 0);

        }

 

        #endregion

        #region 잠금 버튼 클릭시 처리하기 - lockButton_Click(sender, e)

 

        /// <summary>

        /// 잠금 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void lockButton_Click(object sender, EventArgs e)

        {

            LockWorkStation();

        }

 

        #endregion

        #region 절전 모드 버튼 클릭시 처리하기 - hibernateButton_Click(sender, e)

 

        /// <summary>

        /// 절전 모드 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void hibernateButton_Click(object sender, EventArgs e)

        {

            Application.SetSuspendState(PowerState.Hibernate, true, true);

        }

 

        #endregion

        #region 대기 모드 버튼 클릭시 처리하기 - sleepButton_Click(sender, e)

 

        /// <summary>

        /// 대기 모드 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void sleepButton_Click(object sender, EventArgs e)

        {

            Application.SetSuspendState(PowerState.Suspend, true, true);

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요