Функция ShellProc
Описание
Определяемая приложением или библиотекой функция обратного вызова, используемая с функцией SetWindowsHookExA/SetWindowsHookExW . Функция получает уведомления о событиях оболочки из системы.
Тип 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 | Оболочка должна активировать окно main. |
HSHELL_APPCOMMAND 12 | Пользователь завершил событие ввода (например, нажал кнопку приложения на мыши или клавишу приложения на клавиатуре), а приложение не обработало сообщение WM_APPCOMMAND , созданное этим вводом. Если процедура оболочки обрабатывает сообщение WM_COMMAND , она не должна вызывать CallNextHookEx. Дополнительные сведения см. в разделе Возвращаемое значение. |
HSHELL_GETMINRECT 5 | Окно свернуто или развернуто. Системе требуются координаты свернутого прямоугольника для окна. |
HSHELL_LANGUAGE 8 | Изменен язык клавиатуры или загружена новая раскладка клавиатуры. |
HSHELL_REDRAW 6 | Заголовок окна на панели задач перерисован. |
HSHELL_TASKMAN 7 | Пользователь выбрал список задач. Приложение оболочки, предоставляющее список задач, должно возвращать значение 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 ; например, дескриптор окна. Дополнительные сведения см. в разделе параметр cmd в WM_APPCOMMAND. |
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) указывает, что сгенерировало входное событие; например, мышь или клавиатура. Дополнительные сведения см. в описании параметра uDevice в разделе WM_APPCOMMAND.
GET_FLAGS_LPARAM(lParam) зависит от значения cmd в WM_APPCOMMAND. Например, он может указать, какие виртуальные ключи были удержаны при первоначальной отправке сообщения WM_APPCOMMAND . Дополнительные сведения см. в описании параметра dwCmdFlagsв разделе WM_APPCOMMAND. |
HSHELL_GETMINRECT | Указатель на структуру RECT . |
HSHELL_LANGUAGE | Дескриптор раскладки клавиатуры. |
HSHELL_MONITORCHANGED | Дескриптор окна, перемещенного на другой монитор. |
HSHELL_REDRAW | Значение равно TRUE , если окно мигает, или FALSE в противном случае. |
HSHELL_WINDOWACTIVATED | Значение равно TRUE, если окно находится в полноэкранном режиме, или FALSE в противном случае. |
HSHELL_WINDOWREPLACED | Дескриптор нового окна. Windows 2000: не поддерживается. |
Возвращаемое значение
Тип: LRESULT
Возвращаемое значение должно быть равным нулю, если только значение nCodeне HSHELL_APPCOMMAND и процедура оболочки обрабатывает WM_COMMAND сообщение. В этом случае возвращается ненулевое значение.
Комментарии
Установите эту процедуру перехватчика, указав тип перехватчика WH_SHELL и указатель на процедуру перехватчика в вызове функции SetWindowsHookEx .