Функция 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
Другие ресурсы
Справочные материалы