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_FILTERKEYS、 ACCESS_MOUSEKEYS或 ACCESS_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_APPCOMMAND 中 cmd 的值。 例如,它可能指示最初发送 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挂钩类型和指向挂钩过程的指针来安装此挂钩过程。