Поделиться через


Функция 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 .

См. также раздел

CallNextHookEx

SendMessage

SetWindowsHookEx

WM_APPCOMMAND

WM_COMMAND

Обработчики