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

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz