共用方式為


RegisterShellHookWindow 函式 (winuser.h)

[此函式不適用於一般用途。 它可能會在後續版本的 Windows 中改變或無法使用。

註冊指定的殼層視窗,以接收對Shell應用程式有用的事件或通知的特定訊息。

收到的事件訊息只會傳送至與指定視窗桌面相關聯的Shell視窗。 許多訊息都與呼叫 SetWindowsHookEx 函式之後可接收的訊息相同,並指定勾點類型的 WH_SHELLRegisterShellHookWindow 的差異在於訊息是透過指定的視窗的 WindowProc 接收,而不是透過回呼程式接收。

語法

BOOL RegisterShellHookWindow(
  [in] HWND hwnd
);

參數

[in] hwnd

類型: HWND

要註冊殼層攔截訊息之視窗的句柄。

傳回值

類型: BOOL

如果函式成功,則為TRUE;否則為 FALSE

備註

如同一般視窗訊息,視窗程式的第二個參數會將訊息識別為 WM_SHELLHOOKMESSAGE。 不過,針對這些殼層攔截訊息,訊息值不是預先定義的常數,例如其他訊息標識碼,例如 WM_COMMAND。 此值必須使用 RegisterWindowMessage 的呼叫動態取得,如下所示:

RegisterWindowMessage(TEXT("SHELLHOOK"));

這可排除使用傳統 switch 語句來處理這些訊息,這需要編譯時期已知的標識碼值。 針對處理Shell攔截訊息,一般做法是在 switch 語句的預設區段中撰寫 If 語句,然後在訊息識別碼的值與 從 RegisterWindowMessage 呼叫取得的值相同時處理訊息。

下表描述傳遞至殼層攔截訊息之視窗程式的 wParamlParam 參數值。

wParam lParam
HSHELL_GETMINRECT SHELLHOOKINFO 結構的指標。
HSHELL_WINDOWACTIVATED 啟動視窗的句柄。
HSHELL_RUDEAPPACTIVATED 啟動視窗的句柄。
HSHELL_WINDOWREPLACING 視窗的句柄,取代最上層視窗。
HSHELL_WINDOWREPLACED 要取代之視窗的句柄。
HSHELL_WINDOWCREATED 要建立之視窗的句柄。
HSHELL_WINDOWDESTROYED 要終結之最上層視窗的句柄。
HSHELL_ACTIVATESHELLWINDOW 未使用。
HSHELL_TASKMAN 可以忽略。
HSHELL_REDRAW 需要重新繪製之視窗的句柄。
HSHELL_FLASH 需要閃爍之視窗的句柄。
HSHELL_ENDTASK 應該強制結束之視窗的句柄。
HSHELL_APPCOMMAND 應用程式或其他勾點尚未處理的APPCOMMAND。 請參閱WM_APPCOMMAND並使用 GET_APPCOMMAND_LPARAM 宏來擷取此參數。
HSHELL_MONITORCHANGED 移至不同監視器之視窗的句柄。
 

在 Windows XP 搭配 Service Pack 1 (SP1) 和 Windows Server 2003 之前,SDK 標頭和連結庫中未包含此函式。 如果您沒有頭文件並匯入此函式的連結庫,您可以使用 LoadLibraryGetProcAddress 呼叫函式。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 winuser.h (包括 Windows.h)
程式庫 User32.lib
Dll User32.dll

另請參閱

概念

DeregisterShellHookWindow

其他資源

參考

SetWindowsHookEx

ShellProc

使用訊息和消息佇列

WinEvents

WindowProc

Windows