Функция RegisterShellHookWindow (winuser.h)

[Эта функция не предназначена для общего использования. Он может быть изменен или недоступен в последующих версиях Windows.]

Регистрирует указанное окно оболочки для получения определенных сообщений о событиях или уведомлениях, которые полезны для приложений оболочки.

Полученные сообщения о событиях — это только сообщения, отправленные в окно оболочки, связанное с рабочим столом указанного окна. Многие сообщения совпадают с сообщениями, которые можно получить после вызова функции SetWindowsHookEx и указания WH_SHELL для типа перехватчика. Отличие от RegisterShellHookWindow заключается в том, что сообщения принимаются через WindowProc указанного окна, а не через процедуру обратного вызова.

Синтаксис

BOOL RegisterShellHookWindow(
  [in] HWND hwnd
);

Параметры

[in] hwnd

Тип: HWND

Дескриптор окна для регистрации сообщений обработчика оболочки.

Возвращаемое значение

Тип: BOOL

Значение TRUE , если функция выполнена успешно; в противном случае — FALSE.

Комментарии

Как и в случае с обычными сообщениями окна, второй параметр процедуры окна определяет сообщение как WM_SHELLHOOKMESSAGE. Однако для этих сообщений-перехватчиков оболочки значение сообщения не является предварительно определенной константой, как и другие идентификаторы сообщений, например WM_COMMAND. Значение должно быть получено динамически с помощью вызова RegisterWindowMessage , как показано ниже:

RegisterWindowMessage(TEXT("SHELLHOOK"));

Это исключает обработку этих сообщений с помощью традиционной инструкции switch, для которой требуются значения идентификаторов, известные во время компиляции. Для обработки сообщений обработчика оболочки обычно используется код оператора If в разделе по умолчанию инструкции switch, а затем обрабатывать сообщение, если значение идентификатора сообщения совпадает со значением, полученным при вызове RegisterWindowMessage .

В следующей таблице описаны значения параметров wParam и lParam , передаваемые в процедуру окна для сообщений обработчика оболочки.

wParam lParam
HSHELL_GETMINRECT Указатель на структуру SHELLHOOKINFO .
HSHELL_WINDOWACTIVATED Дескриптор активированного окна.
HSHELL_RUDEAPPACTIVATED Дескриптор активированного окна.
HSHELL_WINDOWREPLACING Дескриптор окна, заменяющий окно верхнего уровня.
HSHELL_WINDOWREPLACED Дескриптор заменяемого окна.
HSHELL_WINDOWCREATED Дескриптор создаваемого окна.
HSHELL_WINDOWDESTROYED Дескриптор для уничтожаемого окна верхнего уровня.
HSHELL_ACTIVATESHELLWINDOW Не используется.
HSHELL_TASKMAN Можно игнорировать.
HSHELL_REDRAW Дескриптор окна, которое необходимо перерисовать.
HSHELL_FLASH Дескриптор окна, которое должно быть проблескировано.
HSHELL_ENDTASK Дескриптор окна, которое должно быть принудительно завершено.
HSHELL_APPCOMMAND APPCOMMAND, который не был обработан приложением или другими обработчиками. См . WM_APPCOMMAND и используйте макрос GET_APPCOMMAND_LPARAM для получения этого параметра.
HSHELL_MONITORCHANGED Дескриптор окна, перемещенного на другой монитор.
 

Эта функция не была включена в заголовки и библиотеки пакета SDK до Windows XP с пакетом обновления 1 (SP1) и Windows Server 2003. Если у вас нет файла заголовка и библиотеки импорта для этой функции, можно вызвать функцию с помощью LoadLibrary и GetProcAddress.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll

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

Основные понятия

Отмена регистрацииShellHookWindow

Другие ресурсы

Справочные материалы

SetWindowsHookEx

ShellProc

Использование сообщений и очередей сообщений

WinEvents

Windowproc

Windows