CBTProc 回呼函式
與SetWindowsHookExA/SetWindowsHookExW函式搭配使用的應用程式定義或程式庫定義回呼函式。 系統會在啟動、建立、終結、最小化、最大化、移動或調整視窗大小之前呼叫此函式;完成系統命令之前;從系統訊息佇列移除滑鼠或鍵盤事件之前;設定鍵盤焦點之前;或 與系統訊息佇列同步處理之前。 以電腦為基礎的訓練 (CBT) 應用程式會使用此攔截程式從系統接收有用的通知。
LRESULT CALLBACK CBTProc(
_In_ int nCode,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
nCode [in]
類型: int攔截程式用來判斷如何處理訊息的程式碼。 如果 nCode 小於零,攔截程式必須將訊息傳遞至 CallNextHookEx 函式,而不需進一步處理,而且應該傳回 CallNextHookEx傳回的值。 此參數可以是下列其中一個值。
值 意義 HCBT_ACTI加值稅E 5 系統即將啟動視窗。
HCBT_CLICKSKIPPED 6 系統已從系統訊息佇列中移除滑鼠訊息。 收到此攔截程式碼時,CBT 應用程式必須安裝 WH_JOURNALPLAYBACK 攔截程式,以回應滑鼠訊息。
HCBT_CREATEWND 3 即將建立視窗。 系統會先呼叫攔截程式,再將 WM_CREATE 或 WM_NCCREATE 訊息傳送至視窗。 如果攔截程式傳回非零值,系統就會終結視窗; CreateWindow 函式會傳回 Null,但 不會將WM_DESTROY 訊息傳送至視窗。 如果攔截程式傳回零,則會正常建立視窗。
在 HCBT_CREATEWND 通知時,已建立視窗,但其最終大小和位置可能尚未決定,而且其父視窗可能尚未建立。 雖然尚未收到 訊息WM_NCCREATE 或 WM_CREATE 訊息,但可以將訊息傳送至新建立的視窗。 您也可以修改CBT_CREATEWND結構的hwndInsertAfter成員,以新建立視窗的迭置順序變更位置。
HCBT_DESTROYWND 4 視窗即將終結。
HCBT_KEYSKIPPED 7 系統已從系統訊息佇列中移除鍵盤訊息。 收到此勾點程式碼時,CBT 應用程式必須安裝 WH_JOURNALPLAYBACK 攔截程式,以回應鍵盤訊息。
HCBT_MINMAX 1 視窗即將最小化或最大化。
HCBT_MOVESIZE 0 視窗即將移動或調整大小。
HCBT_QS 2 系統已從系統訊息佇列擷取 WM_QUEUESYNC 訊息。
HCBT_SETFOCUS 9 視窗即將接收鍵盤焦點。
HCBT_SYSCOMMAND 8 系統命令即將執行。這可讓 CBT 應用程式防止工作切換,方法是使用熱鍵。
wParam [in]
類型: WPARAM取決於 nCode 參數。 如需詳細資訊,請參閱下列一節。
lParam [in]
類型: LPARAM取決於 nCode 參數。 如需詳細資訊,請參閱下列一節。
傳回值
類型:****
類型:LRESULT
攔截程式所傳回的值會決定系統是否允許或防止其中一項作業。 對於對應至下列 CBT 攔截碼的作業,傳回值必須是 0,才能允許作業,或 1 來防止它。
- HCBT_ACTI加值稅E
- HCBT_CREATEWND
- HCBT_DESTROYWND
- HCBT_MINMAX
- HCBT_MOVESIZE
- HCBT_SETFOCUS
- HCBT_SYSCOMMAND
對於對應至下列 CBT 攔截碼的作業,會忽略傳回值。
- HCBT_CLICKSKIPPED
- HCBT_KEYSKIPPED
- HCBT_QS
備註
HOOKPROC類型會定義這個回呼函式的指標。 CBTProc 是應用程式定義或程式庫定義函數名稱的預留位置。
攔截程式不應該安裝 WH_JOURNALPLAYBACK 攔截程式,但上述攔截程式代碼清單中所述的情況除外。
應用程式會藉由指定WH_CBT勾點類型和呼叫SetWindowsHookExA/SetWindowsHookExW函式中的攔截程式指標來安裝攔截程式。
下表描述每個HCBT_勾點程式碼的wParam和lParam參數。
值 wParam lParam HCBT_ACTI加值稅E 指定即將啟動之視窗的控制碼。 指定 CBTACTI加值稅ESTRUCT 結構的長指標,其中包含使用中視窗的控制碼,並指定啟用是否因為按一下滑鼠而變更。 HCBT_CLICKSKIPPED 指定從系統訊息佇列中移除的滑鼠訊息。 指定 MOUSEHOOKSTRUCT 結構的長指標,其中包含點擊測試程式碼,以及滑鼠訊息預定之視窗的控制碼。 只有在安裝WH_MOUSE勾點時,才會將HCBT_CLICKSKIPPED值傳送至CBTProc攔截程式。 如需點擊測試程式碼的清單,請參閱 WM_NCHITTEST。
HCBT_CREATEWND 指定新視窗的控制碼。 指定包含視窗初始化參數 之CBT_CREATEWND 結構的長指標。 參數包括視窗的座標和維度。 藉由變更這些參數, CBTProc 攔截程式可以設定視窗的初始大小和位置。 HCBT_DESTROYWND 指定要終結之視窗的控制碼。 未定義 且必須設定為零。 HCBT_KEYSKIPPED 指定虛擬金鑰程式碼。 指定重複計數、掃描程式碼、金鑰轉換程式碼、先前的金鑰狀態,以及內容程式碼。 只有在安裝WH_KEYBOARD勾點時,才會將HCBT_KEYSKIPPED值傳送至CBTProc攔截程式。 如需詳細資訊,請參閱 WM_KEYUP 或 WM_KEYDOWN。 HCBT_MINMAX 指定最小化或最大化視窗的控制碼。 以低順序字組指定顯示視窗值, (SW_ 指定作業) 。 如需顯示視窗值的清單,請參閱 ShowWindow。 高序單字未定義。 HCBT_MOVESIZE 指定要移動或調整大小的視窗控制碼。 指定包含視窗座標之 RECT 結構的長指標。 藉由變更 結構中的值, CBTProc 攔截程式可以設定視窗的最終座標。 HCBT_QS 未定義且必須是零。 未定義且必須是零。 HCBT_SETFOCUS 指定取得鍵盤焦點之視窗的控制碼。 指定視窗失去鍵盤焦點的控制碼。 HCBT_SYSCOMMAND 指定系統命令值 (SC_ 指定系統命令) 。 如需系統命令值的詳細資訊,請參閱 WM_SYSCOMMAND。 包含與WM_SYSCOMMAND訊息lParam值相同的資料:如果使用滑鼠選擇系統功能表命令,則低序單字會包含游標的 x 座標,而螢幕座標中的高序字則包含 Y 座標;否則,不會使用 參數。 如需詳細資訊,請參閱 Windows 事件。
規格需求
最低支援的用戶端
Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限桌面應用程式]
標頭
Winuser.h (包括 Windows.h) 另請參閱