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 挂钩消息的窗口过程的 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 移动到其他监视器的窗口的句柄。
 

在具有 Service Pack 1 的 Windows XP (SP1) 和 Windows Server 2003 之前,SDK 标头和库中未包含此函数。 如果没有此函数的头文件和导入库,可以使用 LoadLibraryGetProcAddress 调用该函数。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll

请参阅

概念性

DeregisterShellHookWindow

其他资源

引用

SetWindowsHookEx

ShellProc

使用消息和消息队列

WinEvent

WindowProc

Windows