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

C++ Builder 註冊系統熱鍵完整範例

     編輯:關於C++

需求場景

應用程式需在背景執行時,透過全域熱鍵 (如 Ctrl+F12) 呼叫主視窗顯示/隱藏,無須點選工作列圖示。

完整實作程式碼

標頭檔 (.h) 宣告

class TMainForm : public TForm {
__published:
    // IDE 管理元件...
private:
    // 使用者宣告...
protected:
    // 訊息對應巨集
    BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER(WM_HOTKEY, TMessage, OnHotKey)
    END_MESSAGE_MAP(TForm)

    void __fastcall OnHotKey(TMessage &Message);  // 熱鍵訊息處理
public:
    __fastcall TMainForm(TComponent* Owner);
};

實作檔 (.cpp) 核心邏輯

void __fastcall TMainForm::FormCreate(TObject *Sender) {
    // 註冊系統熱鍵:ID=2000, Ctrl+F12
    if (!RegisterHotKey(Handle, 2000, MOD_CONTROL, VK_F12)) {
        ShowMessage("熱鍵註冊失敗");
    }
}

void __fastcall TMainForm::OnHotKey(TMessage &Message) {
    // 傳遞給預設處理器
    TForm::Dispatch(&Message);

    // 切換視窗顯示/隱藏
    if (!Visible) {
        Show();
        BringToFront();
    } else {
        Hide();
    }
}

void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action) {
    // 程式結束時註銷熱鍵
    UnregisterHotKey(Handle, 2000);
}

關鍵 API 說明

API用途關鍵參數
RegisterHotKey註冊全域熱鍵hWnd, id, fsModifiers (MOD_CONTROL/MOD_ALT/MOD_SHIFT), vk (虛擬鍵碼)
UnregisterHotKey註銷熱鍵hWnd, id
WM_HOTKEY熱鍵觸發訊息wParam = 熱鍵 ID, lParam 低字=修飾鍵, 高字=虛擬鍵碼

常見修飾鍵常數

  • MOD_ALT (0x0001):Alt
  • MOD_CONTROL (0x0002):Ctrl
  • MOD_SHIFT (0x0004):Shift
  • MOD_WIN (0x0008):Win 鍵 (Windows 2000+)

注意事項

  • 熱鍵 ID 在當前處理序內必須唯一
  • FormClose 中務必呼叫 UnregisterHotKey,否則系統保留熱鍵導致資源洩漏
  • 若熱鍵衝突,RegisterHotKey 返回 FALSE,需更換組合鍵
  • VCL 訊息對應需在 protected 區段使用 BEGIN_MESSAGE_MAP 巨集
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved