RegisterShellHookWindow 函式 (winuser.h)
[此函式不適用於一般用途。 它可能會在後續版本的 Windows 中改變或無法使用。
註冊指定的殼層視窗,以接收對Shell應用程式有用的事件或通知的特定訊息。
收到的事件訊息只會傳送至與指定視窗桌面相關聯的Shell視窗。 許多訊息都與呼叫 SetWindowsHookEx 函式之後可接收的訊息相同,並指定勾點類型的 WH_SHELL 。 RegisterShellHookWindow 的差異在於訊息是透過指定的視窗的 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 呼叫取得的值相同時處理訊息。
下表描述傳遞至殼層攔截訊息之視窗程式的 wParam 和 lParam 參數值。
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 標頭和連結庫中未包含此函式。 如果您沒有頭文件並匯入此函式的連結庫,您可以使用 LoadLibrary 和 GetProcAddress 呼叫函式。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winuser.h (包括 Windows.h) |
程式庫 | User32.lib |
Dll | User32.dll |
另請參閱
概念
其他資源
參考
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應