Функция ShellProc
Процедура фильтра (hook) ShellProc - это определяемая программой или определяемая библиотекой функция повторного вызова, используемая функцией SetWindowsHookEx. Функция получает уведомления о событиях от оболочки системы.
Тип HOOKPROC определяет указатель на эту функцию повторного вызова. ShellProc - это имя - заместитель для определяемого программой или определяемого библиотекой имени функции.
Синтаксис
LRESULT CALLBACK ShellProc( int nCode, WPARAM wParam, LPARAM lParam ); |
Параметры
nCode
[in] Устанавливает код фильтра (hook). Если nCode - меньше чем нуль, процедура фильтра должна переправить сообщение в функцию CallNextHookEx без дальнейшей обработки и должна возвратить значение, возвращенное CallNextHookEx. Этим параметром может быть одно из ниже перечисленных значений.
Значение | Предназначение |
HSHELL_ACCESSIBILITYSTATE | Windows 2000/XP: Изменяет состояние доступности. |
HSHELL_ACTIVATESHELLWINDOW | Оболочка должна активизировать свое главное окно. |
HSHELL_APPCOMMAND | Windows 2000/XP:
Пользователь
завершил событие ввода данных (например,
мышью нажал командную кнопку в
приложении, или командную клавишу приложения
на клавиатуре), а приложение не
обрабатывает сообщение
WM_APPCOMMAND , созданное этим
вводом данных.
Если процедура оболочки обрабатывает сообщение WM_COMMAND, она не должна вызывать функцию CallNextHookEx. Дополнительную информацию см. в разделе Возвращаемые значения |
HSHELL_GETMINRECT | Окно свертывается или развертывается. Система нуждается в координатах свернутого прямоугольника для окна. |
HSHELL_LANGUAGE | Язык клавиатуры изменился, или была загружена новая раскладка клавиатуры. |
HSHELL_REDRAW | Заголовок окна в панели задач был перерисован. |
HSHELL_TASKMAN | Пользователь выбрал список задач. Приложение оболочки, которое предоставляет список задач, должно возвратить значение ИСТИНА (TRUE), чтобы воспрепятствовать Microsoft ® Windows ® запуску его списка задач. |
HSHELL_WINDOWACTIVATED | Активизация перешла на другой верхний уровень, не принадлежащий окну. |
HSHELL_WINDOWCREATED | Был создан верхний уровень, не принадлежащий окну. Окно существует тогда, когда система вызывает этот фильтр (hook). |
HSHELL_WINDOWDESTROYED | Верхний уровень, не принадлежащий окну готовится быть разрушенным. Окно тем не менее существует, когда система вызывает этот фильтр (hook). |
HSHELL_WINDOWREPLACED | Windows XP: Заменяется окно верхнего уровня. Окно существует тогда, когда система вызывает этот фильтр (hook). |
wParam
[in] Значение зависит от величины параметра nCode, как показано в следующей ниже таблице.
П а р а м е т р ы | |
---|---|
nCode | wParam |
HSHELL_ACCESSIBILITYSTATE | Windows 2000/XP: Указывает, какая функция доступа изменила состояние. Это значение равно одному из ниже перечисленных: ACCESS_FILTERKEYS, ACCESS_MOUSEKEYS или ACCESS_STICKYKEYS. |
HSHELL_APPCOMMAND | Windows 2000/XP: Куда сообщение WM_APPCOMMAND было первоначально отправлено; например, дескриптор в окно. Дополнительную информацию, см. в параметре cmd сообщения WM_APPCOMMAND. |
HSHELL_GETMINRECT | Дескриптор в свернутого или развернутого окна. |
HSHELL_LANGUAGE | Дескриптор окна. |
HSHELL_REDRAW | Дескриптор перерисованного окна. |
HSHELL_WINDOWACTIVATED | Дескриптор активизируемого окна. |
HSHELL_WINDOWCREATED | Дескриптор созданного окна. |
HSHELL_WINDOWDESTROYED | Дескриптор разрушенного окна. |
HSHELL_WINDOWREPLACED | Windows XP: Заменяемый дескриптор окна. |
lParam
[in] Значение зависит от величины параметра nCode, как показано в таблице ниже.
П а р а м е т р ы | |
---|---|
nCode | lParam |
HSHELL_APPCOMMAND | Windows 2000/XP: GET_APPCOMMAND_LPARAM
(lParam)
- команда приложения, соответствующая
событию ввода данных.
GET_DEVICE_LPARAM (lParam) указывает на то, что создано событие ввода данных; например, от мыши или с клавиатуры. Дополнительную информацию, см. описание параметра uDevice сообщения WM_APPCOMMAND. GET_FLAGS_LPARAM (lParam) зависит от значения cmd в сообщении WM_APPCOMMAND. Например, он может обозначать, какие виртуальные клавиши удерживались нажатыми, когда сначала было отправлено сообщение WM_APPCOMMAND. Дополнительную информацию, см. в описании параметра dwCmdFlags сообщения WM_APPCOMMAND. |
HSHELL_GETMINRECT | Указатель на структуру RECT. |
HSHELL_LANGUAGE | Дескриптор раскладки клавиатуры. |
HSHELL_REDRAW | Значение равно ИСТИНА (TRUE), если окно мерцает, или, в противном случае, оно - ЛОЖЬ (FALSE). |
HSHELL_WINDOWACTIVATED | Значение равно ИСТИНА (TRUE), если окно находится в полноэкранном режиме, или, в противном случае, оно - ЛОЖЬ (FALSE). |
HSHELL_WINDOWREPLACED | Windows XP: Дескриптор в новое окно. |
Возвращаемое значение
Возвращаемое значение должно быть нуль, если значение nCode не HSHELL_APPCOMMAND, а процедура оболочки, обрабатывает сообщение WM_COMMAND. В этом случае, возвращаемое значение должно быть ненулевым.
Замечания
Устанавливайте эту процедуру фильтра (hook), определяя тип фильтра как WH_SHELL и указатель на эту процедуру фильтра при вызове функции SetWindowsHookEx.
Смотри также
Обзор Фильтр-процедуры (hooks) событий, Функции, используемые фильтрами (hook), CallNextHookEx, SendMessage, SetWindowsHookEx, WM_APPCOMMAND
Размещение и совместимость ShellProc |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
Нет |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |