changeWindowMessageFilter 函数 (winuser.h)

[不建议使用 ChangeWindowMessageFilter 函数,因为它具有进程范围的作用域。 请根据需要使用 ChangeWindowMessageFilterEx 函数来控制对特定窗口的访问。 将来版本的 Windows 可能不支持 ChangeWindowMessageFilter。]

在用户界面特权隔离 (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 或以下的进程更改筛选器。 如果这些进程调用此函数,它将失败。

有关完整性级别的详细信息,请参阅 了解和在受保护模式下工作 Internet Explorer

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll