首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 實現系統關機時自動退出程式

     編輯:關於C#

問題背景

開發一個常駐系統托盤的定時播放器,發現若程式未在關機前主動退出,會阻礙 Windows 關機或重啟。解決之道是在應用程式中攔截系統關機訊息,並回應允許關機。

核心原理

Windows 執行關機時,會向所有執行中的應用程式發送 WM_QUERYENDSESSION (0x0011) 訊息。若應用程式回傳 1,系統即會繼續關機流程。因此,覆寫 WndProc 方法攔截該訊息並設定 m.Result = (IntPtr)1 即可實現自動退出。

程式碼實作

/// <summary>
/// 系統關機時自動關閉應用程式
/// </summary>
/// <param name="m">系統訊息</param>
protected override void WndProc(ref Message m)
{
    switch (m.Msg)
    {
        case 0x0011: // WM_QUERYENDSESSION
            m.Result = (IntPtr)1; // 允許關機
            break;
        default:
            base.WndProc(ref m);
            break;
    }
}

說明

此做法無需額外呼叫 Application.Exit(),系統在收到允許回應後會自動發送 WM_ENDSESSION 並終止進程。適用於任何 WinForms 應用程式,確保不阻礙系統關機。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved