ShellProc 函式
應用程式定義或程式庫定義的回呼函式,用於SetWindowsHookExA/SetWindowsHookExW函式。 函式會從系統接收 Shell 事件的通知。
HOOKPROC類型會定義這個回呼函式的指標。 ShellProc 是應用程式定義或程式庫定義函數名稱的預留位置。
LRESULT CALLBACK ShellProc(
_In_ int nCode,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
類型: 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
此參數取決於 nCode 參數的值,如下表所示。
nCode | wParam |
---|---|
HSHELL_ACCESSIBILITYSTATE | 指出哪些協助工具已變更狀態。 此值為下列其中一項: ACCESS_FILTERKEYS、 ACCESS_MOUSEKEYS或 ACCESS_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
此參數取決於 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勾點類型和攔截程式的指標,以安裝此攔截程式。