registerShellHookWindow 函数 (winuser.h)
[此函数不适用于常规用途。 它在后续版本的 Windows 中可能已更改或不可用。]
注册指定的 Shell 窗口,以接收对 Shell 应用程序有用的事件或通知的某些消息。
收到的事件消息只是发送到与指定窗口桌面关联的 Shell 窗口的消息。 许多消息与调用 SetWindowsHookEx 函数并为挂钩类型指定 WH_SHELL 后可以接收的消息相同。 与 RegisterShellHookWindow 的区别在于,消息是通过指定窗口的 WindowProc 接收的,而不是通过回调过程接收的。
语法
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 的 Windows XP (SP1) 和 Windows Server 2003 之前,SDK 标头和库中未包含此函数。 如果没有此函数的头文件和导入库,可以使用 LoadLibrary 和 GetProcAddress 调用该函数。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winuser.h (包括 Windows.h) |
Library | User32.lib |
DLL | User32.dll |
请参阅
概念性
其他资源
引用
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈