ShellProc 函式

Description

應用程式定義或程式庫定義的回呼函式,用於SetWindowsHookExA/SetWindowsHookExW函式。 函式會從系統接收 Shell 事件的通知。

HOOKPROC類型會定義這個回呼函式的指標。 ShellProc 是應用程式定義或程式庫定義函數名稱的預留位置。

LRESULT CALLBACK ShellProc(
  _In_ int    nCode,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

參數

nCode [in]

類型: int

勾點程式碼。

如果 nCode 小於零,攔截程式必須將訊息傳遞至 CallNextHookEx 函式,而不需進一步處理,而且應該傳回 CallNextHookEx傳回的值。

此參數可以是下列其中一個值。

意義
HSHELL_ACCESSIBILITYSTATE 11 協助工具狀態已變更。
HSHELL_ACTI加值稅ESHELLWINDOW 3 殼層應該會啟動其主視窗。
HSHELL_APPCOMMAND 12 例如,使用者已完成輸入事件 (、按下滑鼠上的應用程式命令按鈕,或鍵盤) 上的應用程式命令鍵,而應用程式未處理該輸入所產生的 WM_APPCOMMAND 訊息。 如果 Shell 程式處理 WM_COMMAND 訊息,則不應該呼叫 CallNextHookEx。 如需詳細資訊,請參閱傳回值一節。
HSHELL_GETMINRECT 5 視窗正在最小化或最大化。 系統需要視窗最小化矩形的座標。
HSHELL_LANGUAGE 8 鍵盤語言已變更,或載入新的鍵盤配置。
HSHELL_REDRAW 6 工作欄中的視窗標題已重新繪製。
HSHELL_TASKMAN 7 使用者已選取工作清單。 提供工作清單的殼層應用程式應該會傳回 TRUE ,以防止 Windows 啟動其工作清單。
HSHELL_WINDOWACTI加值稅ED 4 啟用已變更為不同的最上層未擁有視窗。
HSHELL_WINDOWCREATED 1 已建立最上層、未擁有的視窗。 當系統呼叫此勾點時,視窗就會存在。
HSHELL_WINDOWDESTROYED 2 最上層的未擁有視窗即將終結。 當系統呼叫此勾點時,視窗仍然存在。
HSHELL_WINDOWREPLACED 13 正在取代最上層視窗。 當系統呼叫此勾點時,視窗就會存在。

wParam [in]

類型: WPARAM

此參數取決於 nCode 參數的值,如下表所示。

nCode wParam
HSHELL_ACCESSIBILITYSTATE 指出哪些協助工具已變更狀態。 此值為下列其中一項: ACCESS_FILTERKEYSACCESS_MOUSEKEYSACCESS_STICKYKEYS
HSHELL_APPCOMMAND 指出原始傳送 WM_APPCOMMAND 訊息的位置;例如,視窗的控制碼。 如需詳細資訊,請參閱 WM_APPCOMMAND中的 cmd 參數。
HSHELL_GETMINRECT 最小化或最大化視窗的控制碼。
HSHELL_LANGUAGE 視窗的控制碼。
HSHELL_REDRAW 重繪視窗的控制碼。
HSHELL_WINDOWACTI加值稅ED 啟動視窗的控制碼。
HSHELL_WINDOWCREATED 所建立視窗的控制碼。
HSHELL_WINDOWDESTROYED 終結視窗的控制碼。
HSHELL_WINDOWREPLACED 要取代之視窗的控制碼。 Windows 2000:不支援。

lParam [in]

類型: LPARAM

此參數取決於 nCode 參數的值,如下表所示。

nCode lParam
HSHELL_APPCOMMAND GET_APPCOMMAND_LPARAM(lParam) 是對應至輸入事件的應用程式命令。 GET_DEVICE_LPARAM(lParam) 指出產生輸入事件的內容;例如,滑鼠或鍵盤。 如需詳細資訊,請參閱WM_APPCOMMAND底下的uDevice參數描述。 GET_FLAGS_LPARAM(lParam)取決於WM_APPCOMMAND中的cmd值。 例如,它可能會指出最初傳送 WM_APPCOMMAND 訊息時,會保留哪些虛擬金鑰。 如需詳細資訊,請參閱WM_APPCOMMAND下的dwCmdFlags描述參數。
HSHELL_GETMINRECT RECT結構的指標。
HSHELL_LANGUAGE 鍵盤配置控制碼。
HSHELL_MONITORCHANGED 移至不同監視器之視窗的控制碼。
HSHELL_REDRAW 如果視窗閃爍,則此值為 TRUE ,否則為 FALSE
HSHELL_WINDOWACTI加值稅ED 如果視窗處於全螢幕模式,則值為 TRUE,否則為 FALSE
HSHELL_WINDOWREPLACED 新視窗的控制碼。 Windows 2000:不支援。

傳回

類型: LRESULT

除非 nCode 的值 是HSHELL_APPCOMMAND ,而且殼層程式會處理 WM_COMMAND 訊息,否則傳回值應該是零。 在此情況下,傳回應該是非零。

備註

呼叫 SetWindowsHookEx函式時,指定WH_SHELL勾點類型和攔截程式的指標,以安裝此攔截程式。

另請參閱

CallNextHookEx

SendMessage

SetWindowsHookEx

WM_APPCOMMAND

WM_COMMAND

勾點