ShellProc 函数

说明

SetWindowsHookExA SetWindowsHookExW函数一起使用的应用程序定义或库定义的回调函数。/ 函数从系统接收 Shell 事件的通知。

HOOKPROC 类型定义指向此回调函数的指针。 ShellProc 是应用程序定义或库定义的函数名称的占位符。

LRESULT CALLBACK ShellProc(
  _In_ int    nCode,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

参数

nCode [in]

类型: int

挂钩代码。

如果 nCode 小于零,则挂钩过程必须将消息传递给 CallNextHookEx 函数,而无需进一步处理,并且应返回 CallNextHookEx 返回的值。

此参数的取值可为下列值之一:

含义
HSHELL_ACCESSIBILITYSTATE 11 辅助功能状态已更改。
HSHELL_ACTIVATESHELLWINDOW 3 shell 应激活其main窗口。
HSHELL_APPCOMMAND 12 用户完成了输入事件 (例如,按下鼠标上的应用程序命令按钮或键盘) 上的应用程序命令键,应用程序未处理该输入生成的 WM_APPCOMMAND 消息。 如果 Shell 过程处理 WM_COMMAND 消息,则不应调用 CallNextHookEx。 有关详细信息,请参阅返回值部分。
HSHELL_GETMINRECT 5 窗口正在最小化或最大化。 系统需要窗口的最小化矩形的坐标。
HSHELL_LANGUAGE 8 键盘语言已更改或加载了新的键盘布局。
HSHELL_REDRAW 6 任务栏中窗口的标题已重绘。
HSHELL_TASKMAN 7 用户已选择任务列表。 提供任务列表的 shell 应用程序应返回 TRUE ,以防止 Windows 启动其任务列表。
HSHELL_WINDOWACTIVATED 4 激活已更改为其他顶级的无所有者窗口。
HSHELL_WINDOWCREATED 1 已创建顶级的无所有者窗口。 当系统调用此挂钩时,窗口存在。
HSHELL_WINDOWDESTROYED 2 一个顶级的、无所有者的窗口即将被销毁。 当系统调用此挂钩时,窗口仍然存在。
HSHELL_WINDOWREPLACED 13 正在替换顶级窗口。 当系统调用此挂钩时,窗口存在。

wParam [in]

类型:WPARAM

此参数取决于 nCode 参数的值,如下表所示。

nCode wParam
HSHELL_ACCESSIBILITYSTATE 指示哪个辅助功能已更改状态。 此值为下列值之一: ACCESS_FILTERKEYSACCESS_MOUSEKEYSACCESS_STICKYKEYS
HSHELL_APPCOMMAND 指示 最初发送WM_APPCOMMAND 消息的位置;例如,窗口的句柄。 有关详细信息,请参阅 WM_APPCOMMAND 中的 cmd 参数。
HSHELL_GETMINRECT 最小化或最大化窗口的句柄。
HSHELL_LANGUAGE 窗口的句柄。
HSHELL_REDRAW 重绘窗口的句柄。
HSHELL_WINDOWACTIVATED 已激活窗口的句柄。
HSHELL_WINDOWCREATED 所创建窗口的句柄。
HSHELL_WINDOWDESTROYED 已销毁窗口的句柄。
HSHELL_WINDOWREPLACED 要替换的窗口的句柄。 Windows 2000:不支持。

lParam [in]

类型:LPARAM

此参数取决于 nCode 参数的值,如下表所示。

nCode lParam
HSHELL_APPCOMMAND GET_APPCOMMAND_LPARAM(lParam) 是对应于输入事件的应用程序命令。 GET_DEVICE_LPARAM(lParam) 指示生成输入事件的内容;例如,鼠标或键盘。 有关详细信息,请参阅WM_APPCOMMAND下的 uDevice 参数说明。 GET_FLAGS_LPARAM(lParam)取决于 WM_APPCOMMANDcmd 的值。 例如,它可能指示最初发送 WM_APPCOMMAND 消息时,哪些虚拟密钥被按住。 有关详细信息,请参阅WM_APPCOMMAND下的 dwCmdFlags description 参数。
HSHELL_GETMINRECT 指向 RECT 结构的指针。
HSHELL_LANGUAGE 键盘布局的句柄。
HSHELL_MONITORCHANGED 移动到其他监视器的窗口的句柄。
HSHELL_REDRAW 如果窗口闪烁,则值为 TRUE ,否则值为 FALSE
HSHELL_WINDOWACTIVATED 如果窗口处于全屏模式,则值为 TRUE,否则值为 FALSE
HSHELL_WINDOWREPLACED 新窗口的句柄。 Windows 2000:不支持。

返回

类型: LRESULT

除非 nCode 的值 HSHELL_APPCOMMAND 并且 shell 过程处理WM_COMMAND消息,否则返回值应为 。 在这种情况下,返回值应为非零值。

注解

通过在对 SetWindowsHookEx 函数的调用中指定WH_SHELL挂钩类型和指向挂钩过程的指针来安装此挂钩过程。

另请参阅

CallNextHookEx

SendMessage

SetWindowsHookEx

WM_APPCOMMAND

WM_COMMAND

挂钩