[此函数不适用于常规用途。 它可以在后续版本的 Windows 中更改或不可用。
注册指定的 Shell 窗口,以接收对 Shell 应用程序有用的事件或通知的某些消息。
收到的事件消息只是那些发送到与指定窗口桌面关联的 Shell 窗口的事件消息。 许多消息与调用 SetWindowsHookEx 函数后可以接收的消息相同,并为挂钩类型指定 WH_SHELL 。 RegisterShellHookWindow 的区别在于,消息是通过指定窗口的 WindowProc 接收的,而不是通过回叫过程接收的。
语法
C++复制
BOOL RegisterShellHookWindow(
[in] HWND hwnd
);
参数
[in] hwnd
类型:HWND
用于注册 Shell 挂钩消息的窗口句柄。
返回值
类型: BOOL
如果函数成功,则为 TRUE;否则为 FALSE。
注解
与普通窗口消息一样,窗口过程的第二个参数将消息标识为 WM_SHELLHOOKMESSAGE。 但是,对于这些 Shell 挂钩消息,消息值不是预定义的常量,如其他消息 ID,如 WM_COMMAND。 必须使用对 RegisterWindowMessage 的调用动态获取该值,如下所示:
RegisterWindowMessage(TEXT("SHELLHOOK"));
这排除使用传统 switch 语句处理这些消息,该语句需要编译时已知的 ID 值。 对于处理 Shell 挂钩消息,通常的做法是在 switch 语句的默认部分中编写 If 语句,如果消息 ID 的值与 RegisterWindowMessage 调用中获取的值相同,则处理该消息。
下表描述了传递给 Shell 挂钩消息的窗口过程的 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 | 移动到其他监视器的窗口的句柄。 |
在具有 Service Pack 1 (SP1) 和 Windows Server 2003 的 Windows XP 之前,SDK 标头和库中不包含此函数。 如果没有此函数的头文件和导入库,则可以使用 LoadLibrary 和 GetProcAddress 调用该函数。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |
请参阅
概念性