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


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

[Использовать функцию ChangeWindowMessageFilter не рекомендуется, так как она имеет область для всего процесса. Вместо этого используйте функцию ChangeWindowMessageFilterEx для управления доступом к определенным окнам при необходимости. ChangeWindowMessageFilter может не поддерживаться в будущих версиях Windows.]

Добавляет или удаляет сообщение из фильтра изоляции привилегий пользовательского интерфейса (UIPI).

Синтаксис

BOOL ChangeWindowMessageFilter(
  [in] UINT  message,
  [in] DWORD dwFlag
);

Параметры

[in] message

Тип: UINT

Сообщение, которое нужно добавить в фильтр или удалить из него.

[in] dwFlag

Тип: DWORD

Выполняемое действие. Одно из следующих значений.

Значение Значение
MSGFLT_ADD
1
Добавляет сообщение в фильтр. Это позволяет получить сообщение.
MSGFLT_REMOVE
2
Удаляет сообщение из фильтра. Это действие блокирует сообщение.

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

Тип: BOOL

Значение TRUE в случае успешного выполнения; в противном случае — FALSE. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Примечание Сообщение может быть успешно удалено из фильтра, но это не гарантирует, что сообщение будет заблокировано. Дополнительные сведения см. в разделе "Примечания".
 

Комментарии

UIPI — это функция безопасности, которая предотвращает получение сообщений от отправителя более низкого уровня целостности. Все такие сообщения со значением выше WM_USER блокируются по умолчанию. Фильтр, несколько вопреки интуиции, представляет собой список сообщений, которые разрешены. Таким образом, добавление сообщения в фильтр позволяет получать это сообщение от отправителя с более низкой целостностью, а удаление сообщения блокирует его получение.

Некоторые сообщения со значением меньше WM_USER должны проходить через фильтр независимо от параметра фильтра. Эту функцию можно вызвать, чтобы удалить одно из этих сообщений из фильтра, и она вернет значение TRUE. Тем не менее, сообщение по-прежнему будет получено вызывающим процессом.

Процессы на SECURITY_MANDATORY_LOW_RID или ниже не могут изменять фильтр. Если эти процессы вызывают эту функцию, она завершится ошибкой.

Дополнительные сведения об уровнях целостности см. в статье Общие сведения и работа в защищенном режиме интернет-Обозреватель.

Требования

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