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

C++Builder 禁止用戶關機/重啟:攔截 WM_QUERYENDSESSION

     編輯:關於C++

原理

用戶選擇關機時,系統向所有頂層窗口發送 WM_QUERYENDSESSION。返回 0 (FALSE) 即可取消關機,返回 1 (TRUE) 允許關機。

極簡實現 (僅需幾行代碼)

1. 消息映射 (.hpp)


BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER(WM_QUERYENDSESSION, TMessage, OnWMQueryEndSession)
END_MESSAGE_MAP(TForm)
void __fastcall OnWMQueryEndSession(TMessage &Message);

2. 處理函數 (.cpp)


void __fastcall TForm1::OnWMQueryEndSession(TMessage &Message) {
    if (CheckBox1->Checked)  // 用戶勾選「允許關機」
        Message.Result = 1;
    else
        Message.Result = 0;  // 否則攔截關機
}

測試現象

  • 未勾選時:點擊「開始→關閉系統」,屏幕閃爍一下關機取消。
  • 勾選後:正常關機/重啟。

實際應用建議

將 CheckBox1->Checked 替換為業務邏輯標志位 (如安裝完成、數據保存完畢),在關鍵操作期間自動禁用關機,操作結束後恢復。

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